20150507结构体

Posted wzg31796

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20150507结构体相关的知识,希望对你有一定的参考价值。

一.结构体数组与指针
1.结构体数组动态分配内存
struct csdn

int id;
int num;
;




void main1x()

int num;
scanf("%d", &num);
struct csdn *p1 = malloc(sizeof(struct csdn)*num);//堆
struct csdn *p2 = alloca(sizeof(struct csdn)*num);//栈上
memset(p1, 0, sizeof(struct csdn)*num);
memset(p2, 0, sizeof(struct csdn)*num);
for (int i = 0; i < num; i++)//动态数组引用方式





printf("%d,%d    %d %d\\n", p1[i].id = i, p1[i].num, p2[i].id = i, p2[i].num);

for (int i = 0; i < 10;i++)

int id;
scanf("%d", &id);


for (int j = 0; j < num;j++)

if (id==p1[j].id)  //注意i ,j

p1[j].num++;
p2[j].num++;
break;








for (int i = 0; i < num; i++)//动态数组引用方式





printf("%d,%d    %d %d\\n", p1[i].id=i , p1[i].num , p2[i].id=i , p2[i].num );







//for (int i = 0; i < num;i++)//动态数组引用方式
//
// printf("%d,%d    %d %d\\n", p1[i].id=i, p1[i].num=i+2, p2[i].id=i+1, p2[i].num=i+3);
//
free(p1);








system("pause");



2.结构体指针形式
void main2x()



//int num;
// scanf("%d", &num);
//三种用途
//struct csdn *p1 = malloc(sizeof(struct csdn)*num);//堆
struct csdn *p2 = (struct csdn[])1,2,3,4;










printf("\\n%d", p2[1].id);
printf("\\n%d", (&p2[1])->id);
printf("\\n%d", (p2+1)->id);//p[i] *(p+i)   &p[i]= p+i
printf("\\n%d", (*(p2 + 1)).id);//指针的形式


//struct csdn  csdnx = 10, 20 ;
//struct csdn  *p = &csdnx;
//printf("\\n%d", p->id);
//printf("\\n%d", (*p).id);














system("pause");



3.结构体二维数组
void main()

struct csdn csdndata[100];  //int a[100]
struct csdn *p3 = csdndata;//int *p


struct csdn csdndataX[10][10];  //int a[10][10]
struct csdn(*p4)[10] = csdndataX;//int (*p)[10]=malloc(sizeof(int)*100)




struct csdn(*p5)[10] = malloc(sizeof(struct csdn) * 50);//
p5[3][4];







4.匿名结构体不可以创建变量


5.结构体至少有一个元素


6.匿名结构体如果有指针,指针可以开辟内存,就不可以锁定变量数量


7.数组名和指针的区别是:数组名是常量,指针是变量


8.结构体两种初始化方式:struct Mystruct my[]=10,10;
struct Mystruct *p=(struct Mystruct [])10,10;


9.结构体里面a.b等价于&a->b


10.(*结构体指针名).成员名==结构体指针名->成员名==结构体变量名.成员名


二.结构体大小与内存对齐
1.结构体与最大单位对齐是为了缩短内存寻址时间


2.

以上是关于20150507结构体的主要内容,如果未能解决你的问题,请参考以下文章

C语言实现通讯录管理系统(结构体+枚举+动态内存开辟+文件操作+线性表存放数据)

结构体中二级指针的赋值和释放

结构体和数据流的转换

结构体指针

链表+文件 一个初学者实现学生管理系统的心得

golang 匿名结构体怎么append?