c - 这些语句都会返回一个地址吗?

标签 c arrays pointers memory-address

说你在 C 中有一个字符数组。像这样:

char array[];

现在,下面哪个语句将打印出地址。我知道 1) 和 2) 会,但是 3) 是否也打印出地址?

1) printf("Arrays adress is %x\n", array);
2) printf("Arrays adress is %x\n", &array[0]);
3) printf("Arrays adress is %x\n", &array);

最佳答案

都没有。它们都将打印垃圾值,即您的程序行为未定义


编辑:由于 OP 现在改变了他的问题,答案是:

它们都将通过使用%p 说明符并强制转换每个array&array&array[0] 来打印地址void *

char array[5]; //let's assume an array of 5 chars  

printf("Arrays adress is %p\n", (void *)array);
printf("Arrays adress is %p\n", (void *)&array[0]);
printf("Arrays adress is %p\n", (void *)&array);

关于c - 这些语句都会返回一个地址吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20050506/

相关文章:

android - 为 Android 编译和运行 C 代码

c - 二维数组初始化

C:宏中的预处理器?

arrays - Bash 间接引用关联数组

windows - 什么时候返回 E_POINTER 什么时候返回 E_INVALIDARG?

c++ - 根据需求在 C++ 中定义函数原型(prototype)

c - 我怎样才能在c中创建一个n维数组

c - 测试 2 次刺痛是否有相同的单词 (C)

c - 将指向 char 数组的指针传递给函数

c - 这个打印函数如何将指针移动到链表中的下一项?