c語言指標問題

2023-01-04 05:45:13 字數 800 閱讀 7140

1樓:汜嶷

指標變數和普通變數沒有什麼區別,指標32位四位元組,裡面儲存的是一個記憶體空間的地址,就像一個整形變數int a, a就可以代表一個整數,一個指標變數int* p,p就可以代表一個地址資料,而*地址,代表去這個地址指向的記憶體空間取出裡面的內容,因此如果是要取出這個指標所指向的記憶體裡面的內容就是*p,而如果是需要獲得那個記憶體的地址,或者讓另外一個指標指向這個空間時,就可以使用int* pb;pb=p;

&變數名這是獲取儲存這個變數的記憶體空間地址應該說c語言是門十分靈活的語言,型別幾乎可以說無所謂了,有的只有記憶體和讀取的方式,什麼幾級指標,都沒有意義,就算是一整形,只要強轉,也可以當作地址資料來用,只是可能會段錯誤,因為沒有做地址對映

有的時候確實不太好理解,不過這個隨著時間的積累,慢慢會理解的

2樓:海

假設m=*p++;n=*p++;則m=*p=a[0]=1,然後p的指標加1,指向a[1],所以n=*(p+1)=a[1]=2;然後p的指標再加1,指向a[2];

假設m=(*p)++;n=(*p)++;則m=*p=a[0]=1,然後*p的值加1,即a[0]+1,所以n=(*p)+1=a[0]+1=2;然後後*p的值再加1,即(a[0]+1)+1;

注意:p++與++p的區別,一個是先執行再加1,一個是先加1再執行

3樓:匿名使用者

可以知道int *p=a; 即p是指向陣列a的指標;

則*p是指向指標首項的值即1,所以:

*p++=*(p+1);先指向下一個元素再取值,即2;

(*p)++=*p + 1=2;

C語言指標問題,C語言指標問題

include int main void max min sz 0 for i 1 ip i printf max d position d n max,j 1 printf min d position d n min,k 1 return 0 c語言指標問題 10 最好貼上完整程bai序 或標...

C語言的問題,指標陣列,c語言指標陣列

改變不了,字串常量是改不了的,你可以試試char p aaaaa p 1 b 這樣是改不了的 只能定義二維陣列才可以改 char p 3 100 這樣才可以改,不要問為什麼,字串常量就是不能改 直接讓指標指向另一個字串即可 p 0 aaaa 這樣定義指標指向的字串是無法修改的。c語言指標陣列 p是i...

C語言指標小問題

printf c p 5 輸出字串的第五個字元 從0開始 printf c p 5 輸出亂碼 或者什麼也沒有,因為p 5是一個32位整型地址,其值大於255,而 c格式輸出的值在0 255之間。改用 d就可以看到p 5的地址值了。printf s p 5 輸出從字串第五個元素開始的字串,因為 s對應...