初学C语言,指针与数组???

来源:百度知道 编辑:UC知道 时间:2024/06/23 09:02:39
问题:
设有变量声明
char *s[3]={"beijing","shanghai","tianjin"};
试问
printf("%c",s[2][2]);
的输出是什么? (为什么?越详细越好~~)

另外,s[2][2]与*s[3]之间的联系是怎么样的?

输出:a

char *s[3]={"beijing","shanghai","tianjin"};
s[2][2]是指s的第2个字符串的第2个字符。

beijing是第0个字符串,shanghai是第1个字符串,tianjin是第2个字符串
t是tianjin的第0个字符,i是第1个字符,a是第2个字符

char *s[3] = {"beijing","shanghai","tianjin"};
定义了含有三个串指针的数组,第一个指针指向了"beijing",第二个指针指向了"shanghai",第三个指针指向了"tianjing"

那么s[0] s[1] s[2]分别表示三个指针,那么对于s[2][2]来说,就是取第三个串的第三个字符,所以输出结果是a

char *s[3]={"beijing","shanghai","tianjin"};
``
s[0]=="beijing"
s[1]=="shanghai"
s[2]=="tianjin"
```printf("%c",s[2][2]); ``即`s[2]=="tianjin"的第3个字母 a

另外,s[2][2]与*s[3]之间的联系是怎么样的?
=============================================
s[2]就是*(s+2)```
s[2][2]为*(*(s+2)+2)

输出a
我是这么理解的
*s[3] 有 s[0] s[1] s[2] 这3个都是指针
所以s[2]指向 tianjin s[2][2] 就是tianjin的第三个字母 数组下标从0开始