想要说的都在代码里了
#include<stdio.h>
#include<malloc.h>
//次测试的目的是没有定义一个结构体数组,并说明该数组的大小
//而是定义了一个结构体指针,再给它申请动态内存
//就可以当作数组来用,但是不能用t[1]->来写
//而是只能用点来写
struct S{
int a;
};
int main()
{
struct S *t;
//*2是放在struct括号外面,而非一起放在struct括号里面
t=(struct S*)malloc(sizeof(struct S)*2);
//如果没有申请动态内存则后面的输出都是什么也没有,
//但是没有乘上2,t[1]也有,如果t[n],n过大,则后面输出也是什么也没有
t[0].a=3;
t[1].a=5;
t[1000].a=4;
//t[10000].a=4; 加上这个之后输出什么也没有
printf("%d %d %d\n",t[0].a,t[1].a,t[1000].a); //最后输出结果为 3 5 4
//另外一种输出的方式
int i;
for(i=0;i<2;i++){
printf("%d ",(*t).a);
t++; //指针指向发生改变
} //最后输出的结果为 3 5
?
|