1樓:
printf("%x\n",p); //p指向a[0],其值為地bai址值,這個值du由作業系統管zhi理,人不能確dao定。
printf("%x\n",p+9); //p+9的值
應該比p的值大專36,因為,在32編譯系屬統中,整型佔四個字個。第9個整型元素應該在第0個元素後面4*9=36位元組。
2樓:匿名使用者
我的結果是(每個電腦的結果有可能不一樣):
12ff58
12ff7c
你的程式應該是:
#include
void main( )
,*p;
p=a;
printf("%x\n",p);
printf("%x\n",p+9);
} 程式註釋:p指標指向陣列
專a,那麼p就是陣列a的起屬始地址12ff58,那麼p+9就是陣列中元素a[9]的地址。因為每個整型數是四位元組,所以a[9]的地址是p+4*9,寫成16進位制就是12ff7c。
3樓:晁誠琴釵
你的程bai
序的確很繞啊。du但是在我想了一下換是
zhi明白了。:
你只要dao把你每次改變b記下版來就明白了我給你說
權10吧
28也是一樣的
首先b=
2;之後fun函式傳過去了a[2]的地址就是3,經過運算函式返回了b的值是5
,在接著就是
b=fun(&a[i])+b;這句
最後b就被改寫成了10了
最後輸出就是10
第二次迴圈b的值是10
不是2這個關鍵的
那28也就是這個道理了。明白了吧!!
這裡我就是說一下為什麼第一次迴圈是10
因為你的程式只是執行了一次,所以b的初始化只經過一次。要想在變成2,就要重新執行程式,這時候b在進行初始化,變成2.好了就這樣了!!!希望對你有用!
希望對你能有所幫助。
#include
4樓:匿名使用者
我會非常淺顯,非常詳細地回答你的問題
首先我們看一下圖形的規律,為了更好的說明我多舉一個例子,這裡用「_」代替空格:
n=22*2+1=5
__* 上半部分1行
_*** 上半部分2行
***** 上半部分3行
_*** 下半部分1行
__* 下半部分2行
n=32*3+1=7
___* 上半部分1行
__*** 上半部分2行
_***** 上半部分3行
******* 上半部分4行
_***** 下半部分1行
__*** 下半部分2行
___* 下半部分3行
……#include /*宣告包涵輸出入函式 stio.h*/
main()
/*漏了void,應該寫成void main()或int main()然後在函式結尾返回0值也就是在結尾處寫上return 0 細節不能馬虎*/
for(j=0;j1+2*j;i--) /*這個迴圈列印星星,從上面的例子可以看出星星的規律也就是星星=n-(2*行數-1)+1,上面的語句會隨著j的增大而減少迴圈次數,這裡i初值是2n,判斷句1+2*j會隨j++而增大*/
printf("*"); /*for執行的內容,沒什麼好說的了*/
printf("\n"); /*換行,不難看出每行都是要換行的*/}}
如果對您有幫助,請記得采納為滿意答案,謝謝!祝您生活愉快!
5樓:聽不清啊
程式有錯誤。
#include
void main()
;for(i=0;i<3;i++)
for(j=i;j<3;j++)
printf("%d",a[i][j]);
printf("\n");
}執行後會
輸出123569
6樓:可不起落
這個程式可以執行!
但是,事實上錯漏很多,首先。主函式宣告為int,但是又沒有返回值?
在輸出語句裡面,x == (1 && x)不是一個正常的輸出語句···
執行結果是0。
void main() { int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}; foo(a); printf("%d",a[2][1]); }
int a[3][2] = { 1,2,3,4,5,6 }, (*p)[2]; p = a; printf("%d\n",a); printf("%d,%d",*a,*a[0]); } 50
7樓:匿名使用者
二維陣列
可以當成每個
元素都是一個陣列的一維陣列
比如a[3][2] 可以當作一個一維陣列a[3], 但是a[3]的每個元素回都是答一個一維陣列..
那麼就好理解了 *a是a[0],但是a[0]自身是一個一維陣列,並不是一個數
所以*a[0], 或者**a 才是這個一維陣列的首個元素的值
8樓:匿名使用者
二維陣列的首地址是
來二級自指標,二級指標就是指bai針的指標,du意思就是一個指標指向了另一
zhi個指標。
假如:int **b , *a; b = &a; 所以dao*b中存放的是指標a指向的地址值, b就是a的地址值。
所以這裡的**a 和*a就是這個道理。這裡*a就是第一行首地址的地址值
9樓:哥德**的憂鬱
a是一個二維陣列的首地抄址,*a是對a相當於進行了一次降維,所以*a是一維陣列的首地址,也就是a[0],這麼說吧你可以把a[3][2]看成這樣子, },所以a指向的是這一整個陣列,*a指向才是陣列裡的一個元素,所以再對*a進行*運算,也就是**a,才會是第一元素的值,如果不懂歡迎追問哦。
10樓:育知同創教育
二維陣列不應該是**a才能取到1嗎?
11樓:王子易
你這什麼,題目看不懂
c語言 main() {int a[5]={1,2,3,4,5},b[4]={6,7,8,9},*p=a,*q=b}
12樓:半截小丑
main()
,b[4]=,*p=a,*q=b//p指向a的首地址,即1,q指向b,即6
p+=2;q+=3;//p地址後移2位,指向3,q同理指向9
*p=*(q)+3;//賦值語句,將q指向的內容加3賦給p,則p指向的值3變成12,q依舊為9
q--;//q地址前移1位,即8
*(q-1)=*(p+1)-5;//將p指向位置的下一位的內容即4減去5得-1,賦給q的前一位,則q的前一位變成-1,但q的指向位置沒有改變
printf("%d\n",*p);//輸出p的內容,即為12
printf("%d|n",*q);//輸出q的內容,即為8
} 這裡涉及到很多小知識點,如果不理解,歡迎追問,若滿意,請採納,謝謝
13樓:苗藍強令楓
inta[
]=:意思是a陣列為包含的整數陣列,
inta[
]=,*p=a:p是等效於a的整數指標,你應該這樣讀int*p=a;(*號跟著變數走)定義了一個指標等於a陣列首地址。
14樓:匿名使用者
你應該自己推導,**擋住了你的思路,再提問,這樣對你理解知識有幫助!
15樓:倫悅宜
p+=2;q+=3;p指標指向a[2],q指標指向b[3]*p=*(q)+3;把a[2]換成12
q--;q指標指向b[2]
*(q-1)=*(p+1)-5;b[1]換成-1printf("%d\n",*p);輸出12printf("%d|n",*q);8
16樓:匿名使用者
*p=a 表示指標p指向陣列a的首地址即第一個元素;*q=b指標q指向陣列b的首地址即第一個元素;
p+=2表示陣列a的第三個元素,q+=3表示b陣列的第四個元素。因此*p=3,*q=9;
*p=*(q)+3;這一句是把陣列的第三個元素修改為7;此時a=q--;此時q應指向陣列b的第三個元素
*(q-1)=*(p+1)-5;這一句是修改b中第二個元素為a中第四個元素的值減去5因此b=
一次輸出的結果應為12,8;
17樓:
想知道你寫的這個程式的意義是什麼。
#include
18樓:匿名使用者
int a[10]; 表明a是個陣列,a是陣列名,陣列名在c中就解釋為一個地址常量,代表陣列的首地址。
int *p ; 表明p是個指標變數
p=a; 這時的p中儲存的是陣列a的首地址,此時,我們就可以把p當作a一樣對待了,因此,可以用p[3]表示a[3], 為什麼?呵呵,c就是這樣規定的。
不知道lz怎麼就把p[3]看成一個指標了?再好好看看書。
19樓:唐禎琪
*p代表指標,已經指向陣列了,用p[3]就是引用陣列了
20樓:匿名使用者
p[3]中p相當於a,如果想用指標,可以用*(p+3)
#include
21樓:匿名使用者
首先是 a的初始化
a的值為
a[0][0]~a[0][2] 1 2 3a[1][0]~a[1][2] 4 5 6a[2][0]~a[2][2] 7 8 9void main()
f(int *s,int p[3])
mainint a 3 a a printfd n ,a這不是取反運算嗎?為什麼a輸出是2呢
這個得理解 3是怎麼在計算機中儲存的。負數的補碼 對應正數補碼取反 1 3對應的正數是3,3在計算機中的儲存是0011,取反就是1100,再加1得到3的補碼,也就是1101 然後程式執行這句話a a 所以a現在就是0010,列印出來就是2了 取反的意思,把十進位制數轉成二進位制數,然後按位取反,然後...
簡譜豎笛1234567怎麼吹
以六孔豎笛為例 六個空從下到上分別為一孔 二孔 三孔 四孔 五孔 六孔,分別用右手無名指 中指 食指和右手無名指 中指 食指按住,左手在上右手在下。豎笛按孔時應該用指腹蓋住孔,而不是指尖。吹笛時如果某個孔沒有堵嚴,發生漏氣現象,就不能吹出正確的音。手指全按,音為5 鬆開右手無名指,音為6 鬆開右手無...
粵語1234567怎麼說,粵語12345678910怎麼說
注意,現代粵語是沒有翹舌音的,因此不存在zh ch sh,不區分z和j,c和q,s和x.用普通話的同音字或普通話拼音來給粵語注音是不可能得到正確讀音的,大多數的粵語讀音在普通話也找不到同音字.1,沒有相同普通話字音,普通話拼音也拼不出.略有些相近的是普通話拼音ya 一聲 2,普通話拼音yi 三聲 很...