你好!!!
首先纠正上面的错误:
char ss[6][20];
ss[1]="right?"//这语句是错误的
int k[2][3],*pk[3];
pk=k[0];//这个也是是错的
我们来看看:
char *ss[6];ss[1]="right?"为什么是对的??
首先char *ss[6];是声明了一个指针数组ss,ss有6个元素,6个元素都是指针变量,ss[1]="right?"其中ss[1]是数组的第一个元素(是指针元素哦),ss[1]="right?"表示在静态存储区(内存的一种)放入字符串,并把字符串所在内存的首地址付给指针变量ss[1],是指针变量指向字符串“right?"这样赋值是符合语法的,但是:
c语法不允许char ss[20];ss[20]="hello",但是允许在声明的时候就初始化即char ss[20]="hello"。
可以理解了吧。
2.结构体名字就和int 类似都是一样类型,用来定义变量的,不是什么地址。
首先我猜想你所说的结构大概是:
struct A
{
char sex;
int age;
char name[10];
、、、、、
、、、、、
}
struct A *ps//定义结构体类型的指针变量
那么ps->sex就是表示对象的成员,不是地址。
同样ps->age也是如此:
但是ps->name,就不一样了,这表示对象的成员数组名,我们已经知道数组名就是地址啦,所以ps->name就是地址,那么输入姓名的时候就可以scanf("%s",ps->name);而不是scanf("%s",&ps->name);
这题不对的