c語言問題有點不懂,請指教,C語言的問題 好像很基礎 但是我不懂 求指教!!

2022-06-09 10:27:40 字數 2988 閱讀 8958

1樓:

char * pcstr = 」12345「這裡「12345」是常量,儲存在常量儲存區,是不可更改的。

pcstr是指向該常量的指標,而pcstr[0] = 'a'是要改變該常量的第一個字元為『a',自然會出錯。

而char acstr = 」12345「是一個陣列,陣列裡面儲存的資料是「12345」,儲存在堆疊上,是可以更改的。

所以使用pcstr[0] = 'a'改變其陣列中第一個字元,不會報錯

2樓:總該有辦法吧

char * pcstr實際上定義一個指標,不能直接賦值初始化,而是需要使用類似於malloc的函式進行空間分配,而char acstr定義的是一個陣列,因此可以直接用"12345"分配初始值,至於pcstr[0]='a',本意不知道幹什麼,他可以直接賦值 a2345,但是效果是很清楚的,就是把第一個字元換成a

3樓:匿名使用者

pcstr[0] = 'a'這個pcstr是陣列,後面必須是大於0的數,這裡寫0,表示陣列中有0個元素。,所以不行。

c語言的問題 好像很基礎 但是我不懂 求指教!!

4樓:

因為u8flag是unsigned char型別,所以它可以表示的最大值為255,最小值為0,當迴圈執行255次時,u8flag的值就變成1了(初值為2,自加253次時,值為255,254次時,溢位,歸零,255次時就是1)。

5樓:匿名使用者

typedef unsigned char u8;//給unsigned char取個別名,u8

u8 u8flag=2;//相當

於定義

if(u8flag==1)break;

u8flag可以等於1,因為unsigned char 表示數的範圍是0到255,當u8flag=255時,在做++運算,u8flag就等於0了,再做一次++就等於1了,不過在上述程式中不可能實現u8flag=1呀!當u8flag=0時,while條件不符合,就 不進入迴圈了。除非在其他地方對u8flag還有什麼操作。

或者說**有問題

6樓:匿名使用者

當u8flag 累加到ff 之後再累加就是1了。

7樓:匿名使用者

unsigned char,無符號型別,只有正數,沒負數.溢位,即超過unsigned char定義的範圍,u8flag就會等於1了.純屬個人理解

8樓:匿名使用者

u8flag是unsigned char,它能表示的範圍是固定的0-127,持續++,終歸會有等於1的時候。

9樓:匿名使用者

當溢位(unsigned char)後會=1的!!!

有一個c語言的問題不會,求大神指教!!

10樓:不懂就上網

break是跳出當前的包含 break的最近的一層迴圈。

迴圈就是,因為a=1,已經賦值了,所以for的第一個沒有,只寫了一個分號,表示從a=1 開始,進行迴圈體的內容,

如果a是偶數,則跳出for迴圈。

如果不是偶數,則b=b+a,然後a= a+1,繼續迴圈,這一次,a是偶數了,跳出for迴圈,所以後面那個b+=a就不做了,然後輸出b的值。

至於++a和 a++就的區別就在於這個a=a+1這個操作是在什麼時候做的。

比如a=1, b =2; b=b+(a++),做完這個 b = 3, a =2;也就是說a++是在做完運算以後才+1的

如果是 b=b+(++a),則做完運算後,b=4, a=2.好像是這樣,而++a是在a加完1後才參與運算的。彷彿是這樣,我是來混紅包的。

11樓:知道

break 是跳出迴圈,

在此題中 a=2時, 執行break, 跳出迴圈, 執行下面的printf語句。

++a 是先進行a=a+1運算, 例如 b=++a 首先執行a=a+1 然後將加法後的a 賦值給b

a++ 是後進行a=a+1運算 同樣例如b=a++; 則將a賦給b, 然後執行a=a+1

12樓:

當a是偶數的時候退出迴圈。break退出最近的迴圈。

a++代表先使用a再加1

++a代表先加1再使用a

13樓:匿名使用者

在你這題中,只要符合a%2==0 這個條件就執行break語句,跳出for迴圈。 比如a++是先使用a的值以後,再對a執行自增運算。++a是先對a自增以後,再使用增加以後的a值。

14樓:匿名使用者

break 很簡單啊 跳出當前的迴圈 如果 a=2 的時候

15樓:暗室逢燈

printf("%d/n",b);}

c語言關於棧鏈退棧的問題不懂,請高手指教

16樓:匿名使用者

是。但這只是演算法描述,將需要的所有定義都省略了,只留下核心**,也不能算錯。

c語言指標++的問題搞不懂?求大神指教

17樓:丿艾瑞灬莉婭

陣列名等價於陣列第一個元素的地址,a等價於&a[0]

*ptr_a++,先執行輸出*ptr_a,再ptr_a++,即指向下一個地址

18樓:匿名使用者

答:int *p=&a[1] 即在建立指標p並且初始化的時候將陣列a的第二個元素的地址賦值,使得指標指向8的位置,(*--p)++ 就是指標p先自減1(因為p是int型別的指標,所以自減1就是p所儲存的地址值減去4個位元組)從而使得指標p指向a[0],*是取值運算子,++是字尾形式,所以將5賦值給y後a[0]的值再自加1為6,最後列印y與a[0]的值就是5和6。

c語言問題,C語言問題C語言問題

沒有縮排,看來比較累 但是輸入一串字元以後要輸入結束標誌eof表示你的輸入結束了 如果你是unix,就用ctrl d,dos就用ctrl z include define maxline 1000 maximum input line length int getline char line,int...

c語言問題,C語言問題C語言問題

把檔案中所有逗號用空格替換。把if fp fopen goods.dat rb null 改成fp fopen goods.dat r null 把 feof fp 換成 0。把 一行刪除。以上3 4也可以在while前新增一行 解決 把printf s,2s,d,d n name,price,in...

C語言,有錯誤,請指教,C語言程式裡的錯誤,請高手幫忙指教一下

親 你的 我可以執行出來啊 你可以賦值的時候寫成n 0.0 e 0.0試試 或者你的編譯環境有問題 這是因為你束縛了兩個整數相除的商仍然是一個整數,所以就出錯了。下面是修改以後的程式 和執行的結果。include main e n 1 printf e f n e return 0 你用的什麼編譯環...