沒有任何物件會被分配到位址0。因此,0被當做乙個指標文字量,表明乙個指標當時並沒有指向任何物件。在c中流行的是用乙個巨集null表示0指標。由於c++收緊的型別檢查規則,採用普通的0而不是一些人建議的null巨集,帶來的問題會更少一些。
陣列元素的個數,即陣列的界,必須是乙個常量表示式。如果需要變化的界,那麼可以用vector。例如:
void f(int i)
逗號是序列運算子,不允許出現在常量表示式裡。例如:
int bad[5,2]; //錯誤,逗號不允許出項在常量表示式裡
如果明確給出了大小,陣列在初始化列表中給了多餘的元素就是錯誤。例如:
char v3[2] = ; //錯誤,初始式太多
char v4[3] = ; //可以
如果初始式列表裡的元素太少,剩餘的元素將被設定為0。例如:
int v5[8] = ;
等價於int v5[8] = ;
char p = "abc""def";等價於char p = "abcdef";
int v = ;
int * p3 = &v[4]; //指向最後元素之後乙個位置
取得超出乙個陣列結束之後乙個元素位置的指標,這件事將保證可以做到。當然,這個指標事實上並不指向陣列裡的乙個元素,因此不能通過它去讀或者寫
常量必須初始化。例如:
const int model = 90; //model是個常量
const int x; //錯誤,沒有初始化
int my_f(int);
const int c3 = my_f(3); //可行,編譯器不知道c3的值
int a = 3;
const int* p = &a; //可以
*p = 10; //錯誤,*p為const int
int& n = 2 //錯誤,要求左值
const int& n = 2; //可以
void指標不能直接運算。例如:
int* p;
void* pv = p; //可以
*pv; //錯誤
pv++ //錯誤
結構陣列和結構指標
陣列名可以作為陣列第乙個元素的指標。我們由陣列和指標的關係知道,a代表這個位址數值,它相當於乙個指標,指向第乙個元素 a 0 即指向陣列的首位址。陣列中的其他元素可以通過a的位移得到,此時的高階是以陣列中單個的元素型別為單位的,即a i a i 另外 有關陣列名取位址 a代表的不是取a這個變數的位址...
c 陣列指標和指標陣列
先記住 指標陣列 本質是陣列,資料可以用來存放int float等物件,當然也可以存放指標。例子 陣列指標,用樓上的話就是指向陣列的指標,操作指標就可以運算元組如下 int a 3 int p a printf 陣列指標 d n p 1 列印的結果為2,原因是p初始化指向了陣列a的首位址,即a 0 ...
c語言指標陣列和結構體的指標
指向陣列的指標,先初始化乙個陣列,使用傳統方式遍歷 1 void main 2 4for int i 0 i 5 i 59 1 int a 5 2int p null 建立乙個空指標 3 p a p是乙個指標變數,a就是 陣列首位址 元素1的位址 因為我們利用指標遍歷同樣能達到效果 1 利用指標迴圈...