这些陈述都会返回一个地址吗?

use*_*316 0 c arrays pointers memory-address

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

char array[];
Run Code Online (Sandbox Code Playgroud)

现在,下面的哪些陈述将打印出地址.我知道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);
Run Code Online (Sandbox Code Playgroud)

hac*_*cks 6

他们都不是.所有这些都将打印垃圾值,即您的程序的行为未定义


编辑:由于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);
Run Code Online (Sandbox Code Playgroud)