c++ - 这两种寻址方式有什么区别

标签 c++ c string character

<分区>

这里即使基地址相同,为什么输出不一样,请在第一个 printf 语句中描述工作是如何完成的??

#include<stdio.h>
int main(){
char c[2]="a";
printf("%c\n",c);
printf("%c",c[0]);
return 0;
}

最佳答案

在第一个 printf() 语句中,您有未定义的行为。任何事情都可能发生。在这种情况下,您很不走运,得到了您认为可以解释的结果(但实际上您不能:它是UB)。

在第二个printf()语句中(忽略UB已经发生,整个程序无效),数组的第一个元素 c 被打印出来。

关于c++ - 这两种寻址方式有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23709151/

相关文章:

c - 读取用户输入并检查字符串

c# - Integrated Security=True 与 Encrypt=Yes 用法有什么区别?

c - 函数指针的问题

'Graph' 错误的冲突类型

c - 函数指针赋值,为什么通过指针调用这个函数会导致段错误?

java - 字符串的额外 Java 输入验证

c++ - 如何在 C++ 中为 MPL vector 的所有成员显式实例化模板?

使用堆栈的 C++ 后缀表达式

c++ - 有没有一种方法可以针对永久对象优化shared_ptr?

c++ - 当结构对象超出范围时,如何删除结构对象内的指针?