C 指標 陣列和結構

2021-06-16 06:47:10 字數 1044 閱讀 5710

沒有任何物件會被分配到位址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 利用指標迴圈...