c語言求教各位大佬 5,c語言求教各位大佬

2025-06-09 23:06:16 字數 2158 閱讀 6041

c語言求教各位大佬

1樓:阿斗說

在 c 語言枝團中,陣列名是陣列的首位址,而且數猛晌橘組名是乙個常量指標,不可以直接修改。當你在 enter 函式謹悄中使用 `arr++`來代替 `&arr[i]`,這會導致一些問題:

1. 陣列名是常量指標:陣列名 arr 在函式 enter 中是乙個常量指標,其值是陣列的首位址,一旦宣告後,它的值不能被改變。

因此,你不能使用 `arr++`來移動陣列名的位置。

2. 傳遞指標的副本:當你在 main 函式中呼叫 enter 函式時,實際上是將陣列 arr 的首位址拷貝給了 enter 函式的形參 `int* arr`。

在函式中對形參的修改並不會改變 main 函式中原始陣列的內容。因此,使用 `arr++`只會改變形參的值,並不會改變 main 函式中的原始陣列 arr。

正確的方法是,直接使用陣列名 arr 或者陣列指標 p1 來代替 `&arr[i]`,如下所示:

c#include

void enter(int* arr, int x) ;

int* p1 = arr;

printf("請輸入10個整數:");

enter(arr, 10);

return 0;

在上面的**中,`&arr[i]` 被替換為 `&arr[i]`,而且指標 p1 沒有被使用。函式 enter 正確地接收了陣列 arr 的位址,然後通過指標 arr 來修改陣列的內容。

2樓:

arr是乙個指標,指向了存放arr數字的位址。

arr指標位址被修改的話,指向的資料區域就不對了。

本題中,int儲存佔用2個橋野位元組,但是arr++只移拿禪動了1個位元組,這就敏敏喊導致陣列中資料會被破壞掉。

3樓:創作者

i唯讀,他是for的變數,scanf是要寫他啊。

c語言大佬請進來求解惑

4樓:擁抱

逗號表示式的一般形式為:表示式1,表示式2逗號表示式的求解過程是:先求解表示式1,再求解表示式2。

整個逗號表示式的值是表示式2的值。

此外,需要知道,逗號這個運算子的優先順序是最低的,所以你上面的**裡,把後面的逗號表示式用圓括號括起來了,如果不括起來的就,又是另外一種含義了。

那麼上面的逗號表示式(a+b,a-b)的值就是(a-b)的值,也就是-2了,所以輸出-2。

如有幫助,煩請點採納,謝謝!

5樓:最大的寶寶

a+b,a-b 是逗號表示式,運算時從左往右算,以最右乙個表示式的結果作為整個表示式的結果。所以a-b=3-5=-2,這即是結果。

6樓:蓋成娘

在乙個表示式中使用逗號運算子,如int a=1;int b=2;int c=(a,b);

此時c的值為2,使用逗號運算子時,整個表示式的值為最後一項的值,在上述例子中(a,b)這整個式子的值即為b,也就是為2

int a=3;int b=5;

a+b,a-b)得值即為a-b,也就是-2

7樓:網友

因為這個括號裡 是兩個表示式 並且表示式 差沒有給a或b賦值。

裡面有個逗號運算子 運算規則是從左往右。

所以先算a+b為8 再算a-b只返回a-b 這是c語言的規則說明了的 返回最後乙個。

c語言,求大神指點

8樓:網友

分析:從m迴圈來看,4次迴圈m會分別等於1,2,3,4,由於有s=s+p;是求累加的結果,即分別在m等於1~4時求p值累加。

從n迴圈來看,m次迴圈,由於p=1;語句那麼p值在n=1,2,..m-1迴圈時無論怎麼算都被這句沖掉,也就是在n=m這最後一次迴圈時計算的p值能最終保留下來。

最內側迴圈,仍用變數n,所以外迴圈的n的作用取消,迴圈m次,讓p累乘,相當於求p=1*2*3*..m

那麼在m迴圈m=1時,內部求得的p=1*1=1,s=0+1=1m=2時,p=1*2=2,s=1+2=3

m=3時,p=1*2*3=6,s=3+6=9m=4時,p=1*2*3*4=24,s=9+24=33最後輸出s=33

9樓:電影中學到的事

指點什麼??這就是乙個迴圈的巢狀啊。

c語言問題輸出結果總是負數求教,C語言問題,輸出結果總是負數,求教

在你的switch語句最後都加一個default 看一下switch d switch u 如果出現error這行,說明你的fflush 沒有起作用,改正方法是在scanf 函式後,加一個getchar 如果沒有出現,把你的輸入資訊粘出來,即x d u都是什麼。再幫你看 這個問題有多種可能,不一而足...

C語言題目,求教一下

結果 n 0,k 4 輸出 0 case4 n 2 k break 結果 n 2,k 3 輸出2 case3 n 1 k break 結果 n 3,k 2 輸出3 case2 case4 n 2 k break 結果 n 5,k 1 輸出5 答案應該是0235 確實沒有什麼6的存在 default ...

c語言問題求教 關於指標變數問題

你不知道為什麼會這樣?其實,這個也很好理解的。因為你的p是指向int型資料的,而int型資料在你的編譯器中佔用的是4個位元組,所以你的結果才是 2,而不是 8.就拿你這個程式來說吧。p指向的是記憶體單元1638212。但是p 1指向的確實1638212 4.而不是1638212 1.這是由你的資料型...