c語言的題int a 41,2,3,4,

2021-04-11 18:46:45 字數 4774 閱讀 7936

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相當於拿到了一塊地契,留...