作者TimmyDD (道元博士)
看板C_and_CPP
标题[问题] char 多种宣告判断正确与否
时间Sun Oct 2 22:26:38 2016
各位大大你们好,最近在写一些面试考古题,
自己观念不太好,写到其中一题,脑袋如同酱糊一般黏死了。
在此求救各位QAQ
以下有七种char宣告方式,要选出正确的
(1) char *name = "XYZ WW1B";
(2) char *name[10] = "XYZ WW1B";
(3) char name[7] = "XYZ WW1B";
(4) char *name[8] = "XYZ WW1B";
(5) char name[10] = "XYZ WW1B";
(6) char name = "XYZ WW1B";
(7) char name[10] = {"XYZ WW1B"};
小弟只觉得(5),(7)是对的,其他错的又说不清楚理由,
还恳请各位相助,帮忙厘清观念,谢谢!
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.114.87.231
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1475418401.A.9C3.html
1F:推 bibo9901: 跑一下不就知道了吗? 10/02 22:32
2F:→ jacky1989: 3、6一定是错的 10/02 23:09
3F:→ jacky1989: 3->宣告的空间不够 10/02 23:09
4F:→ jacky1989: 6->根本不是字串阵列 10/02 23:10
5F:→ CoNsTaR: 7 一定是错的 连 type 都不对了 10/02 23:14
6F:→ jacky1989: 2 3 4 6是错的,至於10我刚刚有试跑一次,是可以编译的 10/02 23:17
7F:→ jacky1989: 讲错,是7,但是我不知道这样宣告到底算不算对 10/02 23:17
8F:→ wtchen: 1是字串常数,使用上有点限制,请看置底13诫 10/02 23:32
9F:推 CoNsTaR: 真的耶 7 好像真的没问题 不知道是什麽原因 XD 10/03 02:57
10F:→ jacky1989: 这是我的个人理解啦!因为{}是集合用法,那(7)也是一堆 10/03 03:39
11F:→ jacky1989: 元素构成的集合,只是这个是只有一个元素的集合,所以 10/03 03:40
12F:→ jacky1989: 在逻辑上,这个也行得通,我理解是这样,有错请指教 10/03 03:40
13F:推 CoNsTaR: int i = {7}; 这句也是合法的,我想应该是一样的道理 10/03 06:24
14F:→ CoNsTaR: 不过是啥道理我就不懂了 XDDD 10/03 06:24
15F:→ jfcherng: list initialization 10/03 07:17
16F:推 CoNsTaR: 楼上,可是我用 -std=c99 耶 10/03 07:57
17F:→ uranusjr: (7) 应该是 compond literal 自动展开的效果, 但标准没 10/03 09:30
18F:→ uranusjr: 有规定这样用的效果, 应该是 implementation depedent 10/03 09:30
19F:→ uranusjr: 的 undefined behaviour, 不算正确 (即使结果没问题) 10/03 09:31
20F:→ uranusjr: 以 coding style 来看, 正确的应该只有 5; 以标准来看 1 10/03 09:32
21F:→ uranusjr: 也合法, 但容易出错 (见置底 13 戒之 4) 10/03 09:33
22F:推 g0010726: 1的话 C++17 变成illegal啦 10/03 10:11