C++对字符数组的输入

本人是一个新手,刚刚自学完C++, 今天有感而发,突然想到想到一个问题,关于cin对于字符数组的输入,具体的代码描述是这样的:

(OS: CentOS 7, clang++)

https://img3.mukewang.com/5b73e0740001591b04430382.jpg

运行结果:

https://img.mukewang.com/5b73e07e00013d0601980149.jpg

我觉得这反映了一些深刻的问题:

1:代码的第10行和第11行,我本想输出数组的第一个元素的地址,但为什么输出了整个数组?

2:为什么12行和16行的结果一样,字符串常量"Hello"不是应该存储在常量区么?

3:如果第8行改为  char *str = "Hello";  或 char str[] = "Hello",

对于后者,

https://img4.mukewang.com/5b73e08b000173f607620149.jpg

编译会发出警告,并且运行到第14行出现段错误,这两种表达式的内存分配方式有何异同。

4:对于C语言:

https://img.mukewang.com/5b73e09c000122c902540248.jpg

为什么第7、8行的结果一样? %s有什么内涵?

clang编译报警:clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated

g++不报警告


白衣染霜花
浏览 721回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP