1樓:冰血無雙
char陣列 一個字元為一個元素
char* 陣列記錄 字串的首地址
enum不賦值 預設從0開始
賦值之後 從賦值項開始 em2 =1 所以 em3 = 2"aa" 索引為0 "bb"索引為1 "cc"索引為2 "dd"索引為3
所以輸出 ddbbcc
2樓:瀚漠
第一問:
不加*的話就是:char aa; 這是一個字元陣列,賦值時只能是:char aa = ;
只能用單字元對其初始化。
而char *aa; 是一個字元指標陣列,在初始化的時候就可以用字串對其賦值。
主要是資料型別方面的原因,你可以多看看這方面內容。
第二問:
對於列舉型別,其變數的值是累加的:
這裡enum em; 由於em2為1,那麼em3就是2.
又例如:enum em; 由於em1為1,那麼em2就是2,em3就是3.
未初始化的列舉變數是進行累加賦值的。
3樓:匿名使用者
首先你要知道初始化中,接下來的列舉子取值是前面一個列舉子的取值+1,也就是說em3 = em2
+1;所以輸出cc。
char *aa=;定義的是一個字元指標陣列,它的指標分別指向「aa」、「bb」、「cc」、"dd"。但這兒有個錯誤(可能你用的編譯器太老或者有相關設定沒開啟所以沒提示),「aa」、「bb」、「cc」、"dd"不是變數,也就是說它們是不可變的。而char *aa中指向的地址的內容是可變的,所以是錯的。
應該改成:
const char *aa=;
題主是真正在思考後不懂來提問的人,有別與其他「拿來主義」,可以留下qq一起交流;)
4樓:匿名使用者
aa前面用*是宣告指標陣列,陣列裡存放的是存放變數地址的指標,跟字串在記憶體中存放的方式有關
em是列舉型別,em2 =1 ,em3沒有賦值,則順序下來,就是2,相當於em3 = 2;
c語言問題,C語言問題?
include include int main max min i 0 sum i 0 i 1 i 2 i 3 i 4 i 5 i 6 for j 0 j 6 j printf 去掉一個最高分 0.6lf max printf 去掉一個最低分 0.6lf n min printf 該選手最後的得分...
c語言問題,C語言問題?
char的範圍是 128 127的 你362就溢位了嘛 是這樣的 0362 0是表示8進位制 於是362在10進位制下是242 242溢位了 128 127 於是結果變成242 128 128 14 要明白這個,首先要明白記憶體中 c 變數是什麼樣子的。整數在記憶體中是以補碼的形式存取的。c 036...
C語言問題C語言問題,C語言小問題段錯誤是什麼
str2num char p num num k return num c語言問題c語言問題 include int main int h,m scanf d d h,m printf s num h if m 0 else printf o clock printf n return 0 c語言小...