指標(&,*,->,.,NULL和nullptr)
阿新 • • 發佈:2021-07-20
運算子:
1:& 取地址運算子,&a運算結果是一個指標,指標的型別是a的型別前加*,指標所指向的型別是a的型別, &a所指向的地址是a的地址。
2:* 間接運算子,p為指標,*p型別是p所指向的型別,佔用的地址也是p所指向的地址
例如:
int a=10; int * b=&a;
b=10; b為a的地址,b佔用的地址是a的地址。
指標和結構體的關係
1:-> :指向運算子
2:. : 成員運算子
對於一個結構體:
struct node{ int a,b,c; }; struct node ans={1,2,3}; struct node *ptr =&ans; //訪問 ans中的a cout<<ans.a<<endl;//方法一 cout<<ptr->a<<endl;//方法二 cout<<(*ptr).a<<endl;//方法三 //int型別指標訪問 a,b int * iptr= (int *)&ans; cout<<*iptr<<endl; cout<<*(iptr+1)<<endl;
null和nullptr
null : 實質為巨集定義,相當於0
C中:
#define NULL ((void *)0)
C++中:
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
nullptr :c++11後為了解決NULL在部分情況下可能被編譯器識別為整型的情況下引入, 代表空指標,在C++11支援的地方儘量選擇nullptr