1樓:匿名使用者
因為你這樣寫是不對的;
你沒有正確理解一維陣列名(例如:char buf[10];)、二維陣列名(例如:char buf1[10][10];)、二級指標(例如:
char **myp;)、陣列指標(例如:char (*myp1)[10])、指標陣列(例如:char *p1[10])的真正含義;
你如果想指向一維陣列,你需要用陣列指標,在你這個例子裡,正確寫法如下:
char *p = "abcdefghjklmn";
char buf[10] = ;
//char **myp = &buf; //這個是不對的char (*myp1)[10] = &buf;
printf("*myp1:%d\n", *myp1);
printf("buf:%d\n", buf);
個人理解是在做函式引數時:一維陣列名相當於一個一級指標,二維陣列名相當於一個陣列指標,指標陣列名相當於二級指標,希望可以幫到你。
2樓:小草莓
對不起我學的是c++
在c語言中用二級指標指向一維陣列,為什麼“*變數名”與陣列名的值不一樣
3樓:風若遠去何人留
二級指標不能只想一維陣列取地址.
對於char buf[10];
&buf是陣列指標 char (*p)[10] 型別和char **不匹配. 所以會出錯.
c語言裡面陣列與指標的問題,為什麼 陣列名 與 &陣列名輸出是一個值,如圖所示
4樓:金色潛鳥
宣告裡定義了 int a; 所以 a 是一維陣列語句裡, a 是 一維陣列 的名字,所以它代回表 a 陣列 的首地址。答
(如果 宣告 是 int a; 是簡單 變數,則 語句裡 a 表示 變數 a 的 值)
語句裡,&a 是 求 a 的地址。 對於陣列a,它等於 &a[0] 或 (a+0), 也就等於 a
(如果 宣告 是 int a; 是簡單 變數,則 語句裡 &a 表示 求變數 a 的 地址)
5樓:二笨喵
陣列名代表著陣列的首地址,即&a[0]
建議樓主好好看以下書,等到二維陣列和指標時會更亂
為什麼c語言中二維陣列的陣列名a和*a表示的是同一個值?
6樓:匿名使用者
當定義二維陣列a[m][n]時,陣列名可以認為是二維指標,其指向二維陣列的首地址。
於是a的值就是首地址的值。
而*a,就是a[0],a[0]是第一行的標記,代表第一行的首地址。
在二維陣列中,所有元素都是緊密排列的,這樣整個陣列的首地址,第一行的首地址,和第一個元素的首地址,即a, a[0], &a[0][0] 都是相同的。
於是a和*a的值是相同的。
c語言二級指標問題,C語言二級指標問題
1 通過二級指標去訪問二維陣列需要先給二級指標分配等同於二維陣列行數的一維陣列指標,然後把二維陣列的每行首地址賦值給對應位置的一維指標上。之後就可以通過二維指標直接訪問了。2 參考 如下,可以看具體註釋輔助理解。include 輸入輸出標頭檔案。include 本程式需要用到malloc free函...
c語言中指向陣列元素的指標有一點是指標
hdu我愛c語言 比如說陣列 int a 10 之後你第一個指標 int p p a或者p a 0 這兩個是同一個意思。你這樣操作之後 p a a 0 基本就是同一個意思。 唐麗梅 就是當你定義一個陣列m的時候,然後定義一個變數pm指向它,則這個變數pm一開始的時候指向的是這個陣列m的首地址。無論這...
C語言中二維陣列中指標的問題,C語言中二維陣列中指標的問題
假若定義 int a 10 int p a 那麼p指向a陣列的首地址 若想要找到a 3 則 p 4 這你看到了嗎?首地址 相當於此陣列的名字。因為陣列元素在記憶體中是連續的 邏輯上 所以 知道了首地址就知道了這個陣列所有元素的位置二維應該同理 我也是初學。只能這麼告訴你。但願我的描述是正確的。 a ...