1樓:程式設計大亨
*p是指向int型別的指標,a為陣列首地址,這些理解都是對的,但是,p沒有被初始化
啊,你能直接是用沒有被初始化的變數嘛,那肯定是不行的啊.
所以正確的做法先給p繫結堆記憶體就可以這樣寫了.
#include
using namespace std;
int main()
;*p = array;
cout << (*p)[1] << endl;
system("pause");
return 0;
}編譯完全通過.這裡不貼出來了.點我頭像**.
2樓:
int *p; //這樣寫才對
int a[10];
p = a;
求c語言大神指教指標問題 10
3樓:匿名使用者
11.所謂在16位的編譯系統上,就是說int是16位的,要佔用兩個位元組
a)由於p的型別是int *所以p++後指向a的第2個元素,p移動的是一個整型單元,2個位元組,所以這個選項是錯的
b)綜上所述,這是對的,一個儲存單元,具體的來說是一個整型儲存單元
c)一個整型兩個位元組,所以p移了2個位元組是對的
d)p指標=&a[1]=a+1這也是對的
12.p=&a[3];即p指向陣列a的第4個元素4,b=p[5];p再向後面找到第5個元素即a[3+5]=a[8]=9
13.p=a後,p可以替代a來訪問陣列,即p[0]=a[0],p[1]=a[1],...
p+5=&a[5]=a+5,由於p是指標,p+5一定是個地址(*(p+5)這樣表示才是值),所以a是對的
4樓:聽不清啊
11)a
12)d
13)a
c語言指標++的問題搞不懂?求大神指教
5樓:丿艾瑞灬莉婭
陣列名等價於陣列第一個元素的地址,a等價於&a[0]
*ptr_a++,先執行輸出*ptr_a,再ptr_a++,即指向下一個地址
6樓:匿名使用者
答:int *p=&a[1] 即在建立指標p並且初始化的時候將陣列a的第二個元素的地址賦值,使得指標指向8的位置,(*--p)++ 就是指標p先自減1(因為p是int型別的指標,所以自減1就是p所儲存的地址值減去4個位元組)從而使得指標p指向a[0],*是取值運算子,++是字尾形式,所以將5賦值給y後a[0]的值再自加1為6,最後列印y與a[0]的值就是5和6。
c語言陣列(指標)越界訪問,C語言陣列(指標)越界訪問
與編譯器無關,只與記憶體管理機制有關,是作業系統級別的問題,堆疊的讀取方式只是資料結構上的不同,在機器層面,依然是單純的記憶體讀寫操作 陣列越界訪問的危險性不好評估,但確實是最嚴重的危險之一 結果基本上會100 崩潰,但是崩潰的原因很可能不一樣,就算是同一段越界 跑幾遍,原因也可能是不一樣的 指標越...
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語言求指教
你的if 1,1,pig 的意義何在?你要想罵人豬直接printf pig 啊!如果pig是個變數,你要申請變數啊!c語言,求指教?main a p1 m 因為p1 m,所以p1 m的值為假,即a 0 b p1 p2 7 b 4 6 7 0 7 7 所以,答案是0和7。c語言誕生於美國的貝爾實驗室,...