1樓:飄雪在春季
//定義乙個包含四個元素的整型陣列,a為陣列頭指標int a[4]=;
//將整型陣列轉換為字元穿陣列
char *pt=(char*)a;
//用兩種取值方法列印陣列的第二個元素,結果相同。
//由於乙個int型別佔四個位元組,所以pt+4等於將指標移到第二個元素上。
printf("%d %d",*(a+1),*(int*)(pt+4));
//掌握好c++指標概念不難理解上述結果,哥們加油!
2樓:
printf("%d %d",*(a+1),*(int*)(pt+4));
在我的機器上會得出結果2 2
*(a+1)這句,a即為陣列a[4]的首位址,*a也就是a[0],a+1為陣列中a[1]的位址,那麼*(a+1)就很好理解了,也就是a[1]=2
*(int*)(pt+4)這句,在我機器上sizeof(char)=1,sizeof(int)=4,char *pt=(char*)a;取得a的首位址,pt+4也就是陣列中第二個int型變數的位址,那麼這個結果也就好解釋了。
3樓:匿名使用者
只要理解了指標的加減操作是以指向的資料型別的大小為單位的,比如long *p;的話,p+1就是移動4個位元組,short *p;p+1就是移動2個位元組
求高手幫我分析幾個C語言的問題
1 include表示輸入輸出函式的標頭檔案,一般都帶上 include表示數學型別函式的標頭檔案,如果用到sin 之類的數學函式則要寫這一行 2 不是,那個是for的格式,不能改for 第乙個 前表示初值,第二個表示判斷條件,後面的表示為下一次迴圈做準備 3 嗯 也可以用a a 1 4 表示將一張...
一道簡單C語言指標問題程式設計題!麻煩高手幫我改的簡單容易理解
include include define n 40 void main puts a 修改 請高手幫忙解決一道c語言的程式設計題!急啊!及其不規範,首先給你修改規範,然後給你編上行號,給你說 1 int findstr char str,char substr 2 12 else break 1...
c語言出現空指標賦值怎麼回事請高手幫忙看下
是編譯器報的空指標賦值吧?主要原因 作者沒有搞清楚c中的全域性變數和區域性變數的問題。1。zts 35 point1 35 point2 35 x1 35 這四個陣列在main 中有,在四個子函式中有,各是各的,互不干涉,所以main 中的這四個陣列始終沒有被賦值過,空指標指的就是這個吧。2。應該把...