如果在字符数组名前加上取地址符&,会发生什么?
我测试了一下加和不加结果一样啊
程序1:#include<stdio.h>
int main(void)
{
char str[80];
scanf("%s",&str);
printf("%s",str);
printf("%s","Hello");
return 0;
}
程序2:#include<stdio.h>
int main(void)
{
char str[80];
scanf("%s",str);
printf("%s",str);
printf("%s","Hello");
return 0;
}
求大牛详述 为什么网上说不能在字符数组名前加上取地址符& C语言?取地址符
[解决办法]
因为str的类型是char *
而&str的类型是char (*)[80]
[解决办法]
明确告诉你,肯定不一样。
对数组int a[10]来讲,a和&a都表示地址,准确来讲它们不是地址,而是指针(地址基本上算是错误的说法)!
虽然,指针的内容即指向的地址相同,但指针类型不同:
a是指向数组元素int的指针int*,指针操作的基本单位为4Bytes;
而&a是指向数组a[10]的指针int(*)[10],指针操作的基本单位为40Bytes。