帮我解释C中的一个小问题!

来源:百度知道 编辑:UC知道 时间:2024/06/10 11:46:50
用C编的这程序中
char s[3][5];
scanf("%s%s%s",&s[0][0],&s[1][0],&s[2][0]);
其中的&s[0][0]可以用s[0]代替为什么?
解释下,清楚点,说的好点,现在这谢谢回答的大虾来!
速度!
要得是速度!
用&s[0][0]表示那么输入的不是一个字符吗?用s[0]表示那么输入的不是一串字符吗?解释下,谢谢!

&s[0][0] 是二维数组中s[0][0]的地址
s[0] 同样是二维数组中s[0][0]的地址
===================================
s[0]+1 是二维数组中s[0][1]的地址 与&s[0][1]相同
===================================
一维 同理例char s[3]

&s[0] 是一维数组中s[0]的地址
s 是一维数组中s[0]的地址

===================================
s+1 是一维数组中s[1]的地址

S[0][0]可以用s[0] 代替,但是性质就不一样了,s[0][0]是位置,而s[0]代表的是数组的首地址。

char s[3][5];
scanf("%s%s%s",&s[0][0],&s[1][0],&s[2][0]);

scanf("%s%s%s",此处错误。应为scanf("%c%c%c",
%s为输入字符串的标号。
%c为输入一个字符标号,s[0][0],&s[1][0],&s[2][0]); 都是一个字符

其中的&s[0][0]可以用&s[0]代替为什么?因为地址一样。都是二维数组的第一个元素