什麼叫指針?
指針某一變量或函數的內存地址,是一個無符號整數,它是以系統尋址范圍為取值范圍,32位,4字節。
指針變量:
存放地址的變量,在C++中,指針變量只有有了明確的指向才有意義。
指針類型
int*ptr; //指向int類型的指針變量
char*ptr;
float*ptr;
指針的指針:
char*a[]={"hello","the","world"};
char**p=a;
p++;
cout<<*p<<endl; //輸出the
函數指針:
指向某一函數的指針,可以通過調用該指針來調用函數。
例子:
int max(int ,int);
int (*f)(int int)=&max;
d=(*f((*f)(a,b),c));
指針數組:
指向某一種類型的一組指針(每個數組變量裡面存放的是地址)
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; //輸出1
cout<<**(a+1)<<endl; //輸出11
cout<<*(*a+1)<<endl; //輸出2
cout<<*(a[0]+1)<<endl; //輸出2
cout<<*(a[1]+1)<<endl; //輸出12
cout<<a[0]<<endl; //輸出v[0]首地址
cout<<a[1]<<endl; //輸出v[1]首地址
int*p與(int*)p的區別
int*p:p指向整形的指針變量
(int*)p:將p類型強制轉換為整形的指針
數組名相當於指針,&數組名相當於雙指針
int a[]={{1,2,3,4,5};
int*ptr=(int*)(&a+1);//二維數組,整體加一行
printf("%d%d",*(a+1),*(ptr-1));//輸出25
char*str="helloworld"與char str[]="helloworld"的區別
char*str="helloworld":分配全局數組,共享存儲區
char str[]="helloworld":分配局部數組
作者“我的IT世界”