sytn.net
当前位置:首页 >> 结构体指针对象初始化 >>

结构体指针对象初始化

可以使用循环的方式,创建20个对象,然后依次将所得到的指针放置到数组里面.如果你想创建20个堆区的对象,必须要使用20个new操作.也就是不可避免的调用20次new.但是如果你想在堆区一次性创建一个数组,存放20个对象,可以使用new stuinf[nu]的方式.不过该返回值与stuinf *st[nu];的实际结果不同.stuinf *st[nu];是创建了20个指针,可以指向20个在不连续空间存储的对象.new stuinf[nu]是得到了1个指针,这一个指针指向了一段连续的空间,连续存储了20个对象.请了解.

直接abc *p = NULL;就可以避免警告.不过你使用p存值或取值前一定要先分配内存

1、structs{charc;inti;};struct*p1;/*p1是指向s结构体的指针*/2、typedefstruct{charc;inti;}s,*ps;s*p2;/*p2是指向结构体的指针*/psp3;/*p3是指向s结构体的指针*/

void RegList(LB *L) //初始化线性表(建立头结点,指针域置为空) { L=(LB *)malloc(sizeof(LB)); L->next=NULL; } 改成指针的指针 调用的时候RegList(&k);就行了.void RegList(LB **L) { *L = (LB*)malloc(sizeof(LB)); (*L)->next = NULL; }

a是一个指针,指向A结构体的一个对象a->b 是取这个对象的b成员,b成员是一个指针,指向B结构体的一个对象.你的表述并不精确,我不知道你的具体想法.但是像上面这样如果理解了这些概念,就不会有问题了

struct a { int a; struct b *b; } sturct b { int x; } struct a *sta = null; sta = (struct a *)malloc(sizeof(struct a)); memset(sta, 0, sizeof(struct a)); sta->b = (struct b*)malloc(sizeof(struct b)); memset(sta->b, 0, sizeof(struct b)); sta初始化完成

这个结构体中包含三个变量,num name[20] c你的结构体初始化只初始化了 name[20]其余俩个变量没有初始化,所以会报错你可以这样初始化 struct wo b(1,"jack",'m');要注意对结构体中所有变量都要初始化,除非这个变量有缺省值

STUDENT *p;做到这一步的时候系统就开了一个STUDENT空间,长度就是STUDENT的长度.如果你想让p的值为NULL的话你可以直接给p赋值NULL就可以了比如p=NULL;或者return NULL;我一直不理解for(i=0;i<=50;i++) p->chEmail[i]=NULL;是在干啥,ZeroMemory(p,sizeof(p));这句应该就是把p指向的地址STUDENT长度的字节全赋0了我一般喜欢用memset(p,0,sizeof(p));头文件是<memory.h>p->chEmail[i]=NULL;NULL是空指针,但是这么运算的时候会变成0.最好对char类型赋空值的时候使用'\0'

方法是有的,不过并不太赞成这种做法,不过如果仅仅是作为初始化使用的话,可以先定义一个初始化的函数,并保证在别的地方不再调用这个函数,倒也可以行,代码如下: #include <stdio.h> #include <malloc.h> typedef struct { int* const p; }

for(int i=0;iarr[i]=(struct node *)malloc(sizeof(struct node));给分哦

网站首页 | 网站地图
All rights reserved Powered by www.sytn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com