C语言中&的困惑

来源:百度知道 编辑:UC知道 时间:2024/05/12 19:52:42
在谭浩强的书中,看到有时候用:
scanf("%s",str)
有时候又用:
scanf("%s",&str)
对应起程序,调试后是没有错误的,问:有什么区别????

当然有区别
scanf("%s",str)当str被声明为一个字符串指针时 此种表示比较常见
scanf("%s",&str)当str被声明为一个字符时
下面的代码在VC6.0中运行正确

void main()
{
char str;
scanf("%s",&str);
printf("%s",&str);
}

说实在的 我在谭浩强的书中没有搜索到第二种情况
请告知我页码和书的版次 谢谢

因为这里str是一个数组,所以scanf("%s",&str)里&str代表的是str的开始地址即str[0]的地址,又str本身代表str的第一个元素即str〔0〕的地址,所以scanf("%s",&str)和scanf("%s",str)两者是相同的含义.