c语言编程输入时为什么一维数组要加地址符,字符数组就不用呢

 时间:2024-10-24 06:35:11

因为字符数组,数组名本身就是指一个地址。

定义了字符型数组char name[10]。name有两个含义:一个是代表着name这个数组第一个位置的地址,也就是name[0]的地址。可以说name就等价于&name[0]。

还有一种意思就是指代name整个数组。&name 就是整个数组的首地址。所以name和&name取得的地址是相同的。

c语言编程输入时为什么一维数组要加地址符,字符数组就不用呢

扩展资料

name和&name区别:

不同点在于:name+1表示的是数组第二个元素的地址,而&name+1表示的是整个数组后又一个name数组的首地址,即&name[10]后一个新的name数组的首地址。例如:

#include<stdio.h>

int main(void)

{

char name[10]={"hello csdn"};

printf("name+1的地址:%p\n",name+1);

printf("&name+1的地址:%p\n",&name+1);

return 0;

}

所以说scanf("%s",name);和scanf("%s",&name);执行后的结果是一样的,都是name的首地址,都是给字符数组name赋值。推荐用 scanf("%s",name); ,第二种不容易理解也容易犯错,有些编译软件也不支持会报错。

  • 在C语言中怎样创建一个文件?
  • C语言中 是什么意思
  • getchar的用法
  • 哈密顿图的判定方法
  • C语言如何将大写字母转换成小写字母
  • 热门搜索
    深圳旅游团购 湖北旅游线路 泰国芭提雅旅游攻略 桂林旅游注意事项 旅游营销论坛 马来西亚旅游景点 枫泾古镇旅游攻略 日本北海道旅游攻略 冬季旅游好去处 阳江闸坡旅游攻略