C語言中二維陣列和指標

2021-07-26 14:36:32 字數 1074 閱讀 8378

a或(a+1)//行位址

a+i //行位址加列位址

test**如下所示:

#include

int main(void);

/**第一行位址*/

printf("%p,%p,%p,%p\n",nums,nums[0],*nums,&nums[0]);

/*第二行位址*/

printf("%p,%p,%p,%p\n",nums+1,nums[1],*(nums+1),&nums[1]);

/*a[2][1]的值*/

printf("%d,%d,%d,%d\n",*(nums[2]+1),nums[2][1],*(

*(nums+2)+1),*(&nums[2][1]));

/*第一行第一列的值*/

printf("%d,%d\n",*(

*nums),**nums);

return

0;}

&和*連用的時候是可以整體進行省略的

&在二維陣列中的含義是:位址公升階

即&(第一列位址)--------->會將位址公升階成行位址

*運算子在二維陣列中的另外一種含義就是:位址降階

如:a+1代表第二行位址(行位址)

*(a+1)代表的是(第二行第一列的位址)(列位址)

*(a+1)+2代表第二行第三列位址,**

其順序是由(某一行位址--->某一行位址第一列位址---->某一行位址到具體列數的位址)

即 行位址加指標指標運算子拿到的是列位址,列位址再加指標運算子拿到的是某一行某一列位址中的值;**

%p是位址輸出

printf("%p\n",a[1]+2);

行位址也可以稱為行指標

列位址也可以稱為列指標

對於二維陣列來說; 

*a就是第一行第一列的位址*(a+0)+0;

**能夠run,如果有需要的話,可以直接拉下來run一下,看看結構體陣列是怎麼進行初始化操作和使用的。謝謝大家的訪問,如有寫的不好的地方,希望大家能夠及時的提出來,謝謝**

c語言中二維陣列的傳遞

c語言中經常需要通過函式傳遞二維陣列,有三種方法可以實現,如下 方法一,形參給出第二維的長度。例如 include void func int n,char str 5 void main func 3,str 方法二,形參宣告為指向陣列的指標。例如 include void func int n,...

C 中二維陣列

一 為什麼要使用多維陣列 生活中,有很多事物,僅僅用一維陣列,將無法恰當地被表示。還是說學生成績管理吧。乙個班級30個學員,你把他們編成1到30號,這很好。但現在有兩個班級要管理怎麼辦?人家每個班級都自有自的編號,比如一班學生編是1 30 二班的學生也是1 30。你說,不行,要進行計算機管理,你們兩...

論C語言中二級指標和二維陣列之間的區別

剛開始學習c語言的時候,覺得乙個陣列可以定義乙個一級指標去訪問,想當然的就覺得可以定義乙個二級指標去訪問二維陣列。很顯然這是錯誤的。我們來看看c語言的陣列在記憶體中的儲存方式。實際上c語言中的陣列,實際上都是一維的。即不管是幾維的,都是通過陣列的陣列這種方式來建立的,實際上它們在記憶體中的儲存方式還...