C语言...急...在线

来源:百度知道 编辑:UC知道 时间:2024/05/09 18:42:36
#include<stdio.h>
void main()
{
int i,j;
char s[3][6]={"dog","cat","tiger"};
char(*p)[6]=s;

for(i=0;i<3;i++)
{
printf ("s[%d]:%s\n",i,p+i);
}
for(j=0;j<3;j++)
{
printf("s[%d][0]: %c\n",j,*(*(p+j)+0));}
}

请解释一下这个程序

#include<stdio.h> //---头文件,通过该申明使用printf、scanf等函数
void main() //---main函数,即程序入口函数
{
int i,j;
char s[3][6]={"dog","cat","tiger"}; //--- 定义字符串数组,s[3][6]的3表示一共有3个字符串,而6表示每个字符串的长度最长为6位,超出则溢出出错 如s[1][0]='c',s[1][1]='a',s[1][2]='t'
char(*p)[6]=s; //--- 同上的定义,这个是指针的字符串数组的定义,将p指向数组s[3][6],并每次返回的是一个字字符串,如*p[1]="cat"

for(i=0;i<3;i++)//---循环3次,i = 0 ---> 2
{
printf ("s[%d]:%s\n",i,p+i);//--- 分别输出三个字符串,因为输出的是%s,p+i是地址,表示输出字符串,则第一次输出为:s[0]:dog
}
for(j=0;j<3;j++)
{
printf("s[%d][0]: %c\n",j,*(*(p+j)+0));}//--- 分别输出三个字符串的第一个字符,因为输出的是%c,*(*(p+j)+0))表示的是第一个字符的值,非地址,则输出一个字符,则第一次输出为:s[0][0]
}

最终结果:
s[0]:dog
s[1]:cat
s[2]:tiger
s[0][0]: d
s[1][0]: c
s[2][0]: t

#include<stdio.h>/*头文件*/
void main()/*主函数*/
{
int i,j;/*定义两个整型变量*/
char s[3][6