本文目錄一覽:
C語言指針變量可以當做數組嗎?
比如說定義int *w
然後下邊就可以用作w[i]
這麼對嗎?
對的話在什麼情況下可以這麼使用?
答:不可以,因為w這時還是野指針。只有這樣
int *w,a[44];
w=a;
操作後才可以,操作w就與操作a一樣了。而且,操作指針比直接操作數組名更方便,因為指針是變量,可以++、–,而數組名是常量,不能++、–。
你追問的那個紅框框中的問題不是指針與數組名的問題,而是“形式參數”與“實際參數”的問題。寫函數定義的()中的前面帶類型說明符的變量名叫形式參數。形參與實參相比,最大的特點就是不用擔心沒有賦值或初始化就拿來引用,它們是留着調用時才用實參自動賦值的。而實參則不然,沒有賦值時拿來做右值,就會被警告“引用了沒有初始化的變量”,而且因為初值是隨機的而結果一般都是錯誤的。
c語言指針指向數組的問題。
首先你要明白一點,數組名和指針本質上是一回事,都是地址,該數組的首地址。知道這一點後就可以活學活用了。這是c語言的精髓。
比如你定義了int
*p,a[10];並且讓p=a;,
這個操作叫做指針p指向了數組a,其本質是給p這個變量付了一個值,就是數組a的地址,也是a[0]的地址,也是a本身裡面存儲的內容。
那麼要引用a[i],你可以有很多種寫法,比如*(a+i),
*(p+i),
p[i],都是等效的。
p++的含義其實不是p=p+1,至少有時不是,p++的操作其實是讓p指向下一個元素,也就是原來p指向的是a[0],那麼現在p指向a[1]了。由於a是int類型,站4個字節,那麼p++這個操作其實是讓p的內容增加了4。不要問為什麼,c語言就是這麼規定的。如果p指向的是一個char類型,那麼p++就使p的值增加1。
C語言中指針和數組是怎樣相互轉換的
指針數組,就是一個數組裡存放的都是指針,比如*p[8];p[0]里存放的就是一個指針數據
數組指針,數組名就是一個指向數組起始地址的指針,數組下標是縈引,比如num[0],他就相當於num+0;
num這個指針沒移動,於是取的是數組的第一個。num[1]相當於數組指針移1,於是指向數組第二個
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/198069.html