1樓:零能量超動力
c語言中字串不能用+號相加,除非是c++,將加好過載才可以的,要想把字串相加,得用函式
2樓:匿名使用者
s裡面存的是字串abcde的地址,不能被修改。
s += 2 的話就會修改s的值,所以不可以。
可以這樣:
char s[ ] = "abcde";
char *a = s + 2;
printf("%d\n",a[0]); //輸出的是99 ,即c的ascii碼值。
對於你的問題補充,我是這樣理解的:
s的值是不能被修改的。然而s += 2 就是 s = s + 2。這樣會修改s的值。
如果你想指向s的下兩個字元,應該再定義一個字元指標變數,用它來操作。
不知道我理解的對不對。
問:陣列不也是指標嗎
答:陣列不是指標。陣列名存的是陣列首地址,這個應該是不能被修改的常量。就像你上面程式裡的s。
指標可以是指標常量也可以是指標變數。對於指標變數,是可以修改它的值的,就像我的程式裡的a。但是指標常量是不能被修改的。
這裡的指標常量就可以看成是上面提到的那個陣列名。我是這麼理解的。
以下程式執行後,輸出結果是( ) main() { char *s="abcde"; s+=2; printf("%d\n",s);}
3樓:一嘆
選擇答案c,輸出的為字元c的地址。
因為%d是列印整形變數的值,因為前一句執行了s+=2,s指標偏移了兩個位置,偏移了兩個位置之後s指向的是字元c,所以輸出語句輸出的是指標s,而s存放的是地址,所以輸出的就是字元c所在的地址。
4樓:唯一的天海冥
c的地址,%d是列印整型變數的值,整型變數在32位機上是四位元組,指標變數也是四位元組,所以剛好。
5樓:匿名使用者
c) 字元c的地址
s定義為指向字串「abcde」的指標,
s+=2,s指標偏移2個位置,指向c字元
後面的列印語句,輸出的是s指標的值,即字元c的地址
6樓:匿名使用者
2樓是對的
printf("%d\n",*s);} 就是字元c的ascii碼值printf("%s\n",s);} 就是cdeprintf("%s\n",*s);} 就是段錯誤 d、出錯
7樓:
就是c)字元c的地址
c語言char *p=「abcde/ofghjik/0」; printf(「%d/n」,strlen(p)); 10
8樓:九指無名
應該是打錯了、、/o是不是/0啊。o和0還是不一樣的。。/0是結束符號,要是這樣的話,那麼五個字元就應該是abcde了。
9樓:匿名使用者
樓主 你應該把問題弄錯了
字串 "abcde/ofghjik/0" 應該是"abcde\0fghijk\0"吧
對於strlen是讀取字串個數,碰到\0就結束
參考:內
strlen的結果要在運容行的時候才能計算出來,主要用來計算字串的長度,不是型別佔記憶體的大小,strlen只能用char*做引數,且必須是以''\0''結尾的。
1、第二個元素就是\0 所以得到字串長度為1
2、\t \v \\都是轉義字元,為三個字元,後面又是\0,所以長度為3
3、\x69就是16進位制的69,十進位制為105,檢視ascii表對應字元,而\***指的是一個八進位制值所對應字元,但是\082顯示不是,八進位制只有0-7的數字,所以這裡只是一個\0 和數字 82 字串長度為1
如果要獲得每個陣列中有多少個字元可以考慮用sizeof
4、 以下程式的輸出結果是main( ){ int k=17;printf("%d,%o,%x \n",k,k,k);}
10樓:春天的離開
以下程式的輸出結果是main()
結果:17,21,11。
%d是以十進位制輸出;
%x是以十六進位制輸出;
%o是以八進位制輸出;
所以把17轉換為對應的進位制。
擴充套件資料檔案輸入/輸出
在c語言中,輸入和輸出是經由標準庫中的一組函式來實現的。在ansi c中,這些函式被定義在標頭檔案;中。
標準輸入/輸出
有三個標準輸入/輸出是標準i/o庫預先定義的:
stdin標準輸入
stdout標準輸出
stderr輸入輸出錯誤
11樓:碧海風雲
輸出的結果是:17,21,11
%d:輸出10進位制整型數
%o:輸出8進位制整型數
%x:輸出16進位制整型數
10進位制數17,8進製為21,16進製為11。
12樓:匿名使用者
在c語言裡:
%d 代表的是以十進位制輸出
%o 代表的是以八進位制輸出
%x 代表的是以十六進位制輸出
所以把17轉換為對應的進位制
分別為 17 ,21,11
13樓:許延良
#include
void main()
結果:17,21,11
c語言有以下程式,c語言 有以下程式 include stdio h main
2870 其實是兩個數 28 70 那3個if的意思其實就是要求x使得 x 7 0 x 1 3 0 x 3 1 x 2 2 0 x 2 0 春雨 潤物 terranlong說得已經很對了。如果還看不明白話把程式排版一下就好看了 include main printf n 程式不建議那樣寫,編碼的原則...
有以下程式mainint i,n 0 for i 2 i5 idoif i 3 continue nwh
在這時裡i不可能等於零,所以直接可以把do while去掉,當i 2時 i 3為真,第一個n 沒用,第二個n 後 n 1,當i 3時,i 3為假,第一個n 起作用 n 2,第二個n 後 n 3,當 i 4時,第一個n 沒用,第二個n 後 n 4,迴圈結束,所以選d 輸出結果是n 4。看這個迴圈的執行...
以下程式的輸出結果為,以下程式的輸出結果是 main int a 4,b 5,c 0,d d a b c printf d n ,d
你主要不明白無符號整型和有符號整型的區別 歸根結底printf 輸出的都是記憶體中儲存的值,只是有符號的第一位儲存符號位,而無符號整型則把它當做了資料的一部分輸出了,4在記憶體中的儲存為1 111 111 111 111 100 反碼為1 000 000 000 000 100 知道補碼的知識吧,1...