C - 指针总结
指針是什么?
指針是一變量或函數的內存地址,是一個無符號整數,它是以系統尋址范圍為取值范圍,32位,4字節。
?
指針變量:
存放地址的變量。在C 中,指針變量只有有了明確的指向才有意義。
?
指針類型
int*?ptr;?//?指向int類型的指針變量char*?ptr;float*?ptr;指針的指針:
char*?a[]={"hello","the","world"};char**?p=a;p ;cout?<<?*p?<<?endl;?//?Output?'the'.函數指針:
指向某一函數的指針,可以通過調用該指針來調用函數。
例子:
#include?#include?#include?#include?using?namespace?std;int?max(int?a,?int?b){ return?a?>?b???a?:?b;}int?main(int?argc,?char*?argv[]){ int?a?=?2,?b?=?6,?c?=?3; int?max(int,?int); int?(*f)(int,?int)?=?&max; cout?<<?(*f)((*f)(a,b),c); return?0;}//?Output:/*6*/?
指針數組:
指向某種類型的一組指針(每個數組變量里面存放的是地址)。
int*?ptr[10];?
數組指針:
指向某種類型數組的一個指針。
int?v[2][10]?=?{{1,2,3,4,5,6,7,8,9,10},?{11,12,13,14,15,16,17,18,19,20}};int?(*a)[10]?=?v; //?數組指針cout?<<?**a?<<?endl; //?輸出1cout?<<?**(a 1)?<<?endl; //?輸出11cout?<<?*(*a 1)?<<?endl; //?輸出2cout?<<?*(a[0] 1)?<<?endl; //?輸出2cout?<<?*(a[1] 1)?<<?endl; //?輸出12cout?<<?a[0]?<<?endl; //?輸出v[0]首地址cout?<<?a[1]?<<?endl; //?輸出v[1]首地址?
int* p與(int*) p的區別
int*?p;?//?p是指向整型的指針變量(int*)?p;?//?將p類型強制轉換為指向整型的指針?
數組名相當于指針,&數組名相當于雙指針
?
char* str="helloworld"與char str[]="helloworld"的區別
char*?str?=?"helloworld";?//?分配全局數組,共享存儲區char?str[]?=?"helloworld";?//?分配局部數組總結
 
                            
                        - 上一篇: C 线程的创建
- 下一篇: ddos的攻击分类 带宽工具 应用攻击(
