今天學習了很繞很繞的指標。
早上學的是指向指標的指標,指標變數也是變數,佔據一定的記憶體空間,有位址,因此可以用乙個指標指向他。可以用**p表示,乙個*表示乙個位址,*p = 變數的位址,**p = 變數的位址上的數值的位址,**p是自己也有記憶體。指標型別和指向指標的資料或指標型別一致。
int a=10;
int *p=&a; 給指標p賦值a的位址
printf("%d,%d",a,*p); 結果輸出10 ,10;
int **p1 = &p;
printf("%d",**p1); 結果輸出10;
下午學習的是指標的運算:
p = &a ; (將變數a位址賦給p)
p = a; (將陣列a首位址賦給p)
p = &a[1]; (將陣列元素位址賦予p)
乙個型別為t的指標的移動以sizeof(t)為移動單位
int a[3]=;
int *p; 分兩步寫
p=&a[0]或者寫成p=a;
for(int i = 0;i
printf("%d",a[i]); 輸出1,4,2 這一行和下一行是等價的
printf("%d",*(p+i)) 輸出1,4,2 乙個型別為t的指標的移動以sizeof(t)為移動單位,比較兩個指標的大小實際上是比較兩個位址的前後,在後面的大,所以 p的位址每加i,*(p+i)就是取*p後面的那個位址的值,就可以做到依次取出陣列裡面的值。
printf("%d",*p++); 輸出1,4,2 先執行++,這裡是優先順序的問題,所以下面的情況是錯誤的
printf("%d",(*p)++); 輸出1,2,3 }
指標與陣列:指向陣列元素的指標變數 a[i]<==>p[i]<==>*(p+i)<==>*(a+i)
通過指標引用多維陣列,a[i]+j代表a[i][j]的位址,a[i]表示某一行的首位址,j是第幾列
*(a[i]+j)=a[i][j]
*(*(a+i)+j)等價於*(a[i]+j)
int a[3][3]=,,};
int *p;
p=&a[0][0];或者可以寫為p=&a,意思都是取a陣列的首位址
1。for(int i = 0;i<9;i++)
2.for(int i = 0;i<3;i++)
指標(三) 指標陣列
指標陣列定義 一維指標陣列的定義形式 型別名 陣列名 陣列長度 char p 5 乙個陣列,若其元素均為指標型別資料,稱為指標陣列,指標陣列中的每乙個元素都相當於乙個指標變數。指標陣列的初始化 使用位址為指標陣列初始化 char p 5 指標陣列和二級指標 int main char temp 定義...
C語言(九) 指標(3)指標與const
表示一旦得到了某個變數的位址,不能再指向其他變數 int i 0 int const q i q是 const q 20 ok q error表示不能通過指標去修改這個變數 int i 0 int j const int p i const int p 等同於 int const p p 20 er...
51指標定義
c51指標型別和儲存區的關係詳解 轉貼 一 儲存型別與儲存區關係 data 可定址片內ram bdata 可位定址的片內ram idata 可定址片內ram,允許訪問全部內部ram pdata 分頁定址片外ram movx r0 256 byte 頁 xdata 可定址片外ram 64k 位址範圍 ...