很简单的C的问题

来源:百度知道 编辑:UC知道 时间:2024/07/07 10:29:35
main()
{char a[]="dj";
printf("%s",a[0]);
}

输出的结果是错误的,哪位来解释一下谢谢

main()
{char a[]="dj";
printf("%s",a); /* 打印字符串传入的参数应该是字符串的起始地址 */
}

楼上正解;
同时也可以这样,如下。
void main()
{
char a[]="dj";
printf("%c",a[0]);
}

printf函数的第二个参数要求传递过去的是数组的地址,但是现在直接传递过去一个数值(a[0]的值),函数把这个数值作为数组的地址来输出数组的内容,然而事实上这个地址(a[0]的值)是不允许被访问,所以会产生段故障。