C語言若有定義語句 int a 41,3,5,7p p a則 p 1 的值

2021-03-27 11:10:09 字數 3622 閱讀 9845

1樓:輕曳風鈴

*(p+1)=3

樓主追問

char s[10] = ;則strlen(s)的值為strlen是計算字串長度,遇到'\0'結束返回長度,所以是則表示式pn->b/n.a * ++pn->b的值是

pn結構體指標指向結構體n,n被初始化成

pn->b/n.a * ++pn->b

<=>pn->b = pn->b+1;

pn->b/n.a*(pn->b + 1)=3/1*2=6結構體的->運算子優先順序大於++

++這裡是前加,先加1後再使用加後的值

2樓:苓愛你無言

*p=a中的a就是&a[0],即a[0]的地址,所以*p(p+1)=a[1]的值,即為3

3樓:匿名使用者

p指向a的首地址,所以*(p+1)=a[1]=3

c語言……….若有定義語句:int a[4]={1,3,5,7},*p;p=a;則*(p+1)的值

4樓:棟玉蓉弓琴

*(p+1)=3

樓主追問

char

s[10]

=;則strlen(s)的值為

strlen是計算字

dao符串長度,遇到

回'\0'結束返回長度,所

答以是1

struct

numn

=;struct

num*pn=&n

;則表示式pn->b/n.a

*++pn->b的值是

pn結構體指標指向結構體n,n被初始化成

pn->b/n.a

*++pn->b

<=>pn->b

=pn->b+1;

pn->b/n.a*(pn->b

+1)=3/1*2=6

結構體的->運算子優先順序大於++

++這裡是前加,先加1後再使用加後的值

c語言賦值表示式問題:若定義有語句:int a=3, b=2, c=1; 以下選項

5樓:滄海雄風

a錯了,不能將3賦值給表示式,b=4已經是個表示式了,既然是表示式就只有真假(即0和1),

而 (a=3*5)=4*3 中的a=3*5 是賦值

6樓:匿名使用者

我在vc++6.0中貼上你的**,編譯執行都通過#include

int main()

結果2 4 4

7樓:匿名使用者

賦值語句的物件只能是變數,而不是表示式 b=4已經是個表示式。若換成a=b=3,就對了。

對於b,最後的值:a=2,b=2,c=1

對於c,整個語句是個賦值語句,裡面又巢狀了個b=4的賦值語句,所以,最後的結果是a=5,b=4,c=1

對於d,解法同c,a=5,b=4,c=4.

所以a 是錯誤滴。

c語言中int x=5 *p=&x *p+1的值

8樓:匿名使用者

c是指標變數,&p是表示其地址;而x未賦值,所以&(x+1)是錯誤的 if(x=y)中的x

9樓:匿名使用者

相當於:x+1;

結果為:x=6

10樓:好程式設計師

你寫錯了吧,感覺有點亂,你看看錯了嗎

若有定義:int a[]={2,4,6,8,10,12};*p=a;則*(p+1)值是(),*(a+5)的值是()

11樓:匿名使用者

恭喜你 答對了,呵呵。其實這個問題你只需要在vc的編譯器上執行下就可以知道了,而且多動手寫程式可以調動積極性。

c語言 若已定義:int a[3][4]={1,3,5,6,9},*p=a[2];則p-a的值是 ()?求過程

12樓:匿名使用者

p是指向陣列第三列的地址值

a是指向陣列第一列的地址值

所以 p-a 其實就是兩個地址的差值,實際就是前兩列資料所佔的儲存空間 4*2*2=8個位元組

13樓:匿名使用者

a[2]是在第三行開頭嘛,一行4個,兩行就是8

c語言題:若有定義int a[9],*p=a;則p+5表示( )

14樓:匿名使用者

答案選:b

剛剛看到a[5]就選了

*p=a;指向的就是a[0]

p+5就相當於向後移動5個,就是a[5],表示地址如果是*(p+5),就表示值

15樓:匿名使用者

你好,選b。

int *p = a表示指標p指向陣列a的首地址。也可以說是a[0]的地址。所以p+5指向a[5]的地址

c語言 定義則執行y=(*--p)++後,y的值是

16樓:佼赫然閎竹

這好解釋啊,因抄

為++是後++,要等襲到把(*--p)的值賦給y後(*--p)的值才會增1。所以結果是y=1,a[0]=2。你可以用下面的**驗證:

int main(void),y,*p=&a[1];

y=(*--p)++;

printf("%d %d\n",y,a[0]);

return 0;}

c語言 int a[4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p1; *p=a[0]; *(p++)是什麼意思。

17樓:匿名使用者

瞎寫肯定錯誤多,先改正確:

int a = , *p; //中的4是多餘的。

指向a[0]。

printf("%d\n",*(p++)); //*(p++)等價於*p++,表示取p所指元素的值,p再指向下一個元素,因此,這兒輸出0。

18樓:匿名使用者

*(p++)的意思是對p取值,並且在該行語句執行結束後移動指標累加。

例如*(p++) = 1;

就是將1寫入當前p指向的空間,之後對指標p執行累加。假如剛開始p指向陣列的第0元素,那麼這條語句就是將1寫入陣列的第0元素,之後將指標p指向陣列的第1元素。

19樓:

別琢磨了,這是胡寫的**:

int a[4]只有4個元素,=號右邊的{}裡卻有10個數字為其賦值,編譯器不會讓通過的。

p沒有宣告,不知是什麼,卻把它當指標為其目標賦值a[0],大錯特錯。

同樣*(p++)是編譯器不認識的表示式,因為不知道p為何物。

即便是p已在前面宣告為int *型指標了,*p=a[0];和*(p++)也是錯誤的,因為p還是沒有指向的野指標,就試圖對其指向的目標操作。

這個**行中只有*p1;是正確的——宣告瞭一個名為p1的int *型指標。

若有定義語句 int a 3,b 2,c 1,以下選項中錯誤的賦值表示式是

錯誤的是a 賦值只能賦給變數,不能賦給表示式 正確。賦值語句的物件只能是變數,而不是表示式。若換成a b 3,就對了。對於b,最後的值 a 2,b 2,c 1 對於c,整個語句是個賦值語句,裡面又巢狀了個b 4的賦值語句,所以,最後的結果是a 5,b 4,c 1 對於d,解法同c,a 5,b 4,c...

若有定義語句int a 5p a,則對a陣列元素的正確引用是什麼Aa B a 2 Cp 5 Da

正確答案是 d a 5 就是a 5 下標越界了 a就是a 0 a 0 2不是對陣列元素的正確引用同理,p 5 就是a 5 下標越界了而 a 2 就是a 2 若定義int a 5 p a 則a選項 抄中,a 5 a 5 是a 5 的地 bai址,a 5 是a 5 本身 但數列中沒有a 5 這個du元素...

若有定義 float x 1 5 int a 1,b 3,c 2,則正確的switch語句是

若有定源義 float x 1.5 int a 1,b 3,c 2 則正確的switch語句bai是 duswitch a b 所以這一題選zhi擇c。switch語句的基本形式dao switch 表示式 對於swith 表示式 中的表示式,可以控制程式的執行過程,表示式的結果必須是整數 字元或列...