本人是一个新手,刚刚自学完C++, 今天有感而发,突然想到想到一个问题,关于cin对于字符数组的输入,具体的代码描述是这样的:
(OS: CentOS 7, clang++)
运行结果:
我觉得这反映了一些深刻的问题:
1:代码的第10行和第11行,我本想输出数组的第一个元素的地址,但为什么输出了整个数组?
2:为什么12行和16行的结果一样,字符串常量"Hello"不是应该存储在常量区么?
3:如果第8行改为 char *str = "Hello"; 或 char str[] = "Hello",
对于后者,
编译会发出警告,并且运行到第14行出现段错误,这两种表达式的内存分配方式有何异同。
4:对于C语言:
为什么第7、8行的结果一样? %s有什么内涵?
clang编译报警:clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
g++不报警告
相关分类