1樓:江公主玖押
答案a.
陣列復定義是a[0]=1,a[1]=2,a[2]=3, ...,a[9]=10
a. p += 2使p指向
a[2], *(p++)表示先製取*p的值, 然後
p增加1(指向a[3]), 所以取得的值是a[2]=3
b. p += 2使p指向a[2], *++p表示先p增加1(指向a[3]),然後取*p的值,所以是a[3]=4
c. p += 3使p指向a[3], *p++表示先取*p的值, 然後p增加1(指向a[4]), 所以取得的值是a[3]=4
d. p += 2使p指向a[2], ++*p對*p的值增加1, 所以取得的值是a[2]=a[2]+1=4
還有一種寫法是(*p)++, 表示先取*p的值, 這個值再增加1
c語言問題 若有說明int a[][4]={1,2,3,4,5,6,7,8,9};,則陣列a第一維
2樓:格子裡兮
若有說明int a[][4]=;則陣列a第一維是3。
定義陣列並賦值時c語言規定下標是這樣的,a[n]中的n個元素應該是a[0]....a[n-1]。。
因此int a[4]的寫法就是表示,第一維大小沒限制,但是第二維陣列大小就是4,也就是int a[4]=,,},明顯是3。
分析:二維陣列的一維大小,即指二維陣列的行數,在本題中,按行對二維陣列賦值,因此內層有幾個大括號,陣列就有幾行。
3樓:杜爺1號
答案是b,3.
int a[4]的寫法就是表示,第一維大小沒限制,但是第二維陣列大小就是4,也就是int a[4]=,,},明顯是3.
4樓:小兆
你定義的就是一個二維陣列,第二維的個數是4,為了把所有的資料能分成四份有沒有遺漏,那第一維就是3了。
5樓:寂寞的菸頭哥
首先看陣列後面為4表示有四列二維陣列是
1234
5678
9000
這裡就可以很明顯的看出是三行,所以就是a[3][4],第一個叫做第一維,第二個叫做第二維
已知:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12},c語言問題
6樓:匿名使用者
int (*ptr)[3]=a這句,
bai將a的首地du址賦值給了ptr,ptr表示的是zhi指向一個含有三個int的數dao組的指標,*((ptr+1)[2])等價於*((ptr+1)+2),等回價於*(ptr+3),這表示從答
陣列a的首地址向後移動3個單位,每個單位為一個含有3個int的陣列,所以一共向後移動了9個單位,即得出執行結果10!
要想正確表達a[1][2],應該是(*(ptr+1))[2],陣列的運算子[ ]比間值運算子*的優先順序高,(*(ptr+1))[2]表示a向後移動一個單位即三個int,此時ptr指向4,再往後移動2個int指向6。
其實遇到這類問題畫記憶體結構圖比較容易理解了
7樓:匿名使用者
(*ptr)[3]=a,陣列
指標只有3行,陣列a有四行,所以(*ptr)[0]=,(*ptr)[1]=,(*ptr)[2]=,所以*((ptr+1)[2])表示的是(*ptr)[2]裡面的回
第二個元素就是答10
8樓:匿名使用者
*((ptr+1)[2])這種用法是不對的,陣列的下標相當與解引用,比如a[2]=*(a+2)
因此,上面的替換做法是(*(ptr+1))[2].
9樓:巫馬尓絲
*((ptr+1)[2])和copy*(*((ptr+1)+2))是等價的,而第二個算式可以演化成*(*(ptr+1+2)),也就是*(*(ptr+3))。
你既然會用指標表示陣列,那麼我用一維陣列給你舉個例子:
int arr[3];
這裡如果要表示陣列的第二個元素,有2種方式 arr[1], *(arr+1),
就是說arr[1] == *(arr+1)
那麼你*((ptr+1)[2])我們只看括號內的內容(ptr+1)[2] ,它按照上邊的等式轉化一下就是*((ptr+1)+2),去掉裡面的括號*(ptr+1+2),也就是*(ptr+3);
*((ptr+1)[2]) == *(*(ptr+3)) == a[3][0]
很好的解釋了為什麼你寫的第一個表示式是10了,
你如果要用ptr表示a[1][2]就應該是*(*(ptr+1)+2)或者*(ptr+1)[2]這樣寫才對。
c語言的問題 int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[4]; p = a;
10樓:匿名使用者
因為p[0]和p[1]分別指向4個整數
如果你是需要將p[1]指向的4個整型資料一次性賦值給p[0]指向的4個單元,那麼c語言沒有這麼簡單的賦值,只好編個程式一個一個地賦值;
如果你是需要把p[0]指向p[1],那麼你可以寫:p[0]=&p[1];
11樓:
我試了,p[0]為不可修改的左值。
只知道這個語句本身是有問題的,p[1]是依賴p[0]的。p[0]怎麼可能由p[1]賦值呢?
或許彙編的角度更有說服力。期待正解!
c語言問題:已有定義int a[10]={1,2,3,4,5,6,7,8,9,10} 要求通過指標完成從一維陣列中刪除下標為k的元素
12樓:匿名使用者
兩個問題:
1.輸入k之後 ,要重新將 p 指向 a 即10行前+一句 p = a;
2.最後一個for越界,i=9 時 p+i+1 就成了 p+10
13樓:匿名使用者
「baifor(p=a;p-a<10;p++)」這個迴圈du已經讓p指向zhi了陣列中最後一個元素,所以「for(i=k;i<10;i++)」在這個迴圈之前應該讓daop重新指回陣列的內第一個元素,故改為for(i=k,p=a;i<10;i++)
另外 刪除一個元素之後 陣列中只有9個元素,所容以應當把a[9]賦值為'\0'或者在最後一個迴圈中控制條件改為p-a<9
c語言題目:經過 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}定義之後,元素a[1][0]的值是_____。
14樓:匿名使用者
b int a[0]=
int a[1]=
int a[2]=
所以a[1][0] = 5
15樓:怎能不憂傷
這個是2維陣列,陣列是從0開始的,即
a[0][0] a[0][1]..............
...................................
a[2][0]................a[2][3]所以a[1][0]是第版5個數,即5,選權b
c語言指標問題。。 若有int a[]={0,1,2,3,4,5,6,7,8,9,0},*p=a,
16樓:匿名使用者
a: a[p-a] = a[0],即bai陣列a的第一個元素。du這裡的a沒有定義,估計應該本來是zhia吧,輸入題目的dao
時候不專小心句首自動大寫了
b: a[i]是數屬組a的第i個元素,&a[i]是該元素的地址,所以*(&a[i])是該元素的值。該項等價於a[i]
c: p[i] = a[i],即陣列a的第i個元素值d: 這個是錯誤的。*(a+i)是陣列a的第i個元素值,*(*(a+i))語法錯誤
c語言 int a[]={1,2,3,4,5,6,7,8,9,10},*p=a,則值為3的是
17樓:馮老師(必果學院
這bai是一個指
針求du值的問題,答案zhi應該是a
答案分析如dao下:
首專先,所有的逗號屬運算子,是從左向右進行的,其值為右邊結果計算的值
a p+=2,*(p++) 先計算p+=2 再計算*p 最後計算p++ 表示式的值在第二步計算確定的 為p[2] = a[2] = 3。表示式計算完畢之後,p指向4
b p+=2,*++p 先計算p+=2,再計算++p 最後計算*p 表示式的值在最後一步確定 為4
c p+=3,*p++ 先計算p+=3,再計算*p 最後計算++ 表示式的值在第二步確定為4,而後a[3]的值變為5
d p+=2,++*p先計算p+=2,再計算*p 最後計算++ 表示式的值在最後一步確定,為4,而後a[2]的值變為4
18樓:匿名使用者
答案a.
陣列定義是a[0]=1,a[1]=2,a[2]=3, ...,a[9]=10
a. p += 2使p指向a[2], *(p++)表示先取*p的值, 然後p增加版1(指向a[3]), 所以取權得的值是a[2]=3
b. p += 2使p指向a[2], *++p表示先p增加1(指向a[3]),然後取*p的值,所以是a[3]=4
c. p += 3使p指向a[3], *p++表示先取*p的值, 然後p增加1(指向a[4]), 所以取得的值是a[3]=4
d. p += 2使p指向a[2], ++*p對*p的值增加1, 所以取得的值是a[2]=a[2]+1=4
還有一種寫法是(*p)++, 表示先取*p的值, 這個值再增加1
c語言中inta為啥不對,C語言中inta0為啥不對????
對啊,怎麼不對?宣告int型陣列a,並用一個整型資料0初始化,這個陣列只有一個元素a 0 其值是0,有什麼錯?c語言對陣列的初bai始化賦值還有以下幾點du規定 zhi1 可以只給部分元素賦初值dao。當中值的個內數少於元素個數時,只 給前面部分元素賦值。例如 int a 10 表示只給容a 0 a...
c語言 inta 是什麼意思,C語言 int a 是什麼意思
int a的時候,編譯器不會給a分配記憶體空間,因為它只是另一個變數的標記 a是存放a的記憶體地址,比如變數a 1,a就等於存放這個1的記憶體地址的數值 例 include intmain intb 5 int p1 a int p2 a printf b d b d n b,b getch ret...
inta0和inta區別,c語言程式設計inta和inta有區別嗎?
c 全域性變數中沒有任何區別,函式中第一個輸出時會輸出0,而第二個不定。前者是抄在記憶體中開闢了一塊襲叫做a的內bai存空間,裡面存放 du0 後者表示zhi將要開闢記憶體空間了,dao但是還沒有開闢簡單的說,int a 0相當於建了一座倉庫,然後再裡面裝了貨物而 int a相當於拿到了一塊地契,留...