使用未初始化的指標會帶來非常大的風險。0:null/nullptr,nullptr可隱式轉為bool
char *p=
建立乙個以\0終止的字串字面值。p為第乙個字元的位址。
注意:指向char型別的指標,輸出方式以一種特殊的方式來解析這類指標——將p對應位置開始一直到結束都會輸出,即p輸出字串本身,而不是字串的位址,但*p仍是第乙個字元
char *p="stra";
while(i<3)
2.(),,.,->
3.++,--,typeid,explicit_cast
4.++,--,~,!,-,+,\*,&,(),sizeof
5.sizeof,new,delete,noexcept
6.->\*,.\*
7.*,/,%
8.+,-
9.<<,>>
10.<,>,<=,>=
11.==,!=
12.&
13.^
14.|
15.&&
16.||
17.?:
18.=
19.*=,/=,%=,+=,-=,<<=,>>=,&=,|=,^=
20.throw
21.,
char (*p)[3]
故p與p+1的差距為sizeof(char p[3])
char p[3]
p與p+1的差距為sizeof(char),而&p與&p+1差距為sizeof(p),其中:
例如:
char (*p)[10];
char a[10];
p=&a;
若p=&a改為p=a則會報出如下錯誤:指標型別不相容賦值。
&a和a的右值雖然相等,但型別不匹配,從而導致sizeof(型別)大小不同
二維陣列
char[3][2]:看成具有3個元素的一維陣列: char (*p)[2]=a可以換成: auto p=a
三維陣列
char[3][4][2]:看出一維陣列
多級指標
故char*p可用char**p表示。
int &*p(此用法非法)
int* &p:首先p是乙個引用,引用的型別為整型指標。即給指標取乙個別名。
從而上述說明了b[i][j]等價於*(*(b+i)+j)或*(b[i]+j)或*(b+i)[j]
陣列引用:與指標用法的區別
int a[10];
int (&b)[10]=a;
運算子優先順序 C 運算子優先順序
c 運算子優先順序 優先順序運算子 描述方向1 scope resolution 範圍解析 left to right 2 suffix postfix increment and decrement 字首 字尾遞增和遞減 function call 函式呼叫 array subscripting ...
運算子優先順序 Python 運算子優先順序
python 運算子優先順序 運算子描述 lambda lambda表示式 or布林 或 and布林 與 not x 布林 非 in,not in 成員測試 is,is not 同一性測試 比較 按位或 按位異或 按位與 移位 加法與減法 乘法 除法與取餘 x,x 正負號 x 按位翻轉 指數 x.a...
運算子優先順序 PHP運算子優先順序
php運算子優先順序 結合方向 運算子附加資訊 非結合clone new clone 和 new左 array 非結合 遞增 遞減運算子 非結合 int float string array object bool 型別非結合 instanceof 型別右結合 邏輯操作符 左 算術運算子 左 算術運...