納悶的問題指標

2022-11-15 16:15:22 字數 1329 閱讀 7342

1樓:

1.陣列名可以當成指標常量,該指標常量指向陣列的第一個元素,例如:

char str[10]=; //未指定的陣列元素自動賦值為0,0的ascii碼為null

char *p = str;

puts(str); puts(p); //如果用for () 列印,空字元將被列印出來。(ab );

在這種情況下,str 是指向陣列第一個元素的指標,該指標是常量的,不能對它進行如 ++ --之類的操作。

2.陣列名在函式中,被轉換為一個普通的指向陣列第一個元素的指標變數,可以對它進行運算,如++ --等;例如:

void assignnumbers(int data, int n)

}int main(void)

//不過可以 int *p =num; for ()

return 0;

}結果:0123456789

指標陣列 typename *p[n] : 定義了一個陣列,陣列包含了n個指標變數p[0],p[1]......p[n-1];

例如: *p[3] = ; sizeof(p) = 3*4 =12 (p 為陣列名代表整個陣列) *p[1] = "abc"...

p = &p[0] (p+1)=&p[1] , 符合一般陣列的特性,除了陣列中的元素是指標以外,和一般的陣列沒什麼區別。陣列名p 是個指標常量,不能直接進行指標運算,不過可以傳遞給函式來進行。可以通過p[x] (0<=x

p[2] = "hijklm"; 否則,對陣列中的每個指標進行初始化, 必須先分配p[x] 所指向的記憶體空間! 必須對分配結果進行判斷 if ( p[x]=(typename *)malloc(n * sizeof(typename)) == null) 失敗。

lz肯定是把指向陣列的指標和指標陣列混一起了。

2樓:匿名使用者

第一個例子中那個p是陣列名,而不是一個指標變數,所以不能用自增自減運算。

如果你這樣寫就沒問題了:

int main()

;char ** q = p;

printf("%s",*++q);

return 0;}

3樓:湛藍水晶

因為第一種的時候,p是一個char*的陣列,陣列名p是個常量,所以++p是不行的。

第二種情況,p是一個指向char的指標,所以可以執行++p

4樓:匿名使用者

p++是在這個陣列指標上加了1,相當於指標指到了記憶體中陣列的下一區域,也就是"asdfg"後面了

求教 指向指標的指標的問題,求教 指向指標的指標的一個問題。

指標在計算機中是一個32位 即四位元組 的一個值,這32位資料代表一個地址,當你宣告瞭一個 char p的指標的時候,自動分配了32位大小的空間儲存指標p,但是,注意,p沒有指向任何空間,所以 p操作是錯誤的,你必須先為 p分配一塊空間才行,具體做法如下 p char malloc sizeof c...

c指標的問題

首先,在指標定義時規定了ip是一個指向整形的指標,但是int ip 3 這句話讓ip指向3號地址塊,但是3號地址塊裡的內容是不確定的,所以是錯誤的 int ip 3 是不是這一步驟有問題?指標初始化不能這樣幹!include void main 這就對了。這時候ip指向a,而原先ip是指向3,而3是...

指標問題char pbuf pbufnew char

第二句給這個指標分配了100個位元組的空間,不是800。指標確實是指向記憶體塊的地址,指標型別不是確定地址範圍,而是確定單個元素的長度 要不然pbuf 5到底是加幾個位元組?char 就是加 5 1位元組,如果是int 那麼就加5 4位元組 當然要型別啊,沒有型別指標怎麼定址啊。char型別是一個位...