c语言中char类型数组的输出问题--输出时为何需要&符?

如题所述

第1个回答  2022-09-29

在C语言中数组的名字即数组的起始地址,也是数组第一个元素的地址。因此,假设有一个char类型的数组a表示成如下代码:

char a[20];

那么a表示字符数组的起始地址,它和&a[0]是一个意思。

使用printf()输出字符数组a的内容:

printf("%s\n", a);

就等同于printf("%s\n", &a[0]);

输出的时候用:

int i = 0;

for (i=0; i<10; i++) {

printf("a[%d]=%c\n", i, a[i]);

}

防止缓冲区溢出可以用这样的:

fgets(a, sizeof(a), stdin);

a[strlen(a) - 1] = '\0';

扩展资料:

如果在定义字符数组时不进行初始化,则数组中各元素的值是不可预料的。如果花括号中提供的初值个数(即字符个数)大于数组长度,则出现语法错误。如果初值个数小于数组长度,则只将这些字符赋给数组中前面那些元素,其余的元素自动定为空字符(即'\0')。

如果提供的初值个数与预定的数组长度相同,在定义时可以省略数组长度,系统会自动根据初值个数确定数组长度。

参考资料来源:百度百科-字符数组

相似回答
大家正在搜