1. 首页 > 科技

C语言结构体指针问题 求助大佬 c语言定义结构体指针

C语言结构体指针问题 求助大佬c语言定义结构体指针

关于C语言结构体指针的问题,求大神回答....

c1=(order*)malloc(sizeof(order));

   c2=(goods*)malloc(sizeof(goods));

   c3=(customer*)malloc(sizeof(customer));下面添加

c1->a=(goods*)malloc(sizeof(goods));

   c1->c=(customer*)malloc(sizeof(customer));因为你虽然为c1,c2,c3分配了空间,但是没有为c1中的good *a和customer *c分配空间

c语言中指向结构体指针问题,求大神,为甚么printf("%d",*p);错误*去掉了却可以了

指针用的不对 

应该是

#include<stdio.h>

#include<stdlib.h>

#include<math.h>

int main()

{

    struct student

{

int num;

char c[10];

}s[3]={100,"ffwq",101,"dddq",102,"fwfw"};

struct student *p;

p=(struct student*)&s[0];

printf("%d",p->num);

system("pause");

}

问个C语言结构体中的结构体指针问题,求大家回答。

你的第一个main函数:

strcpy(al->Check->UserName,"MyName");

这个访问方式不对,应该是:

strcpy(al.Check->UserName,"MyName");

当然,这不是主要的问题,主要问题正如你所说,没有为al.Check分配内存空间,也就是al.Check的值是乱码,al.Check所指向的内存空间你是无权操作的,所以会导致非法内存的访问。

理了一下你的思路,你的意思是说希望能定义一个AL_t的结构体变量之后到使用UpdateData函数操作它之前,你还需要做太多的操作,希望简化这些操作?是吧?

方案一:

typedef struct

{

Check_t *Check;

}AL_t;

改为

typedef struct

{

Check_t Check;//直接定义成值类型

}AL_t;

方案二:

参照面向对象的方式:构造->使用->析构

#include//记得包含头文件

写一个初始化函数:

init_AL_t(AL_t* t)

{

t->Check=(Check_t*)malloc(sizeof(Check_t));

}

删除函数

destroy_AL_t(AL_t* t)

{

free(t->Check);

}

这种方式不太推荐,因为使用完后一定要free,不然会内存泄露,改变Check时也要free,否则同样会有内存泄露的问题。

c语言中结构体问题,本人菜鸟。求高手指教

typedef struct node

{

datatype data;

struct node *next;

}linklist;

相当于

struct node

{

datatype data;

struct node *next;

}

typedef struct node linklist;

typedef的作用是重命名;这段的意思就是把struct node重名为linklist;

linklist a;就相当于struct node a;