在结构体中如下给结构体内的指针赋初值,可以吗?正确方式是什么

作者&投稿:梁炒 (若有异议请与网页底部的电邮联系)
如何给包含结构体变量的结构体变量赋初值~

声明和定义是无法赋值的,在student1的赋初值,你只需要把birthday的元素按顺序拆开,然后再赋值就可以了

比如你就可以这样
student1 = { "Liming",2009,1998,2,3}

D 不对 中括号[] 处会报错
A 是正常的结构体定义
B 直接定义结构体数组stu,无结构体名字,不可再定义结构体其他变量
C 结构体正常定义

a={"chengu",27,&b},

你这么赋值的时候,b还没有定义,当然会出错了。
struct student
{char number[10];
int age;
student *next;
}c={"erpeng",29,NULL}, b={"xiaokai",26,&c}, a={"chengu",27,&b};

因为a的定义中用了b的地址,所以必须把b的定义放在前面,同理c应该在b前面……


在链表中struct node *next中的*next是什么意思呀,指针为什么可以这么...
next是链表节点指向下一个节点的指针,用来存放下一个节点的地址域。这是链表的一种固定结构。例如:typedef struct node { int data;struct node *next;}stacknode,*linkstack;typedef将stacknode定义成了结构体类型,将linkstack定义成了指向结构体stacknode的指针类型,它们现在都是一种类型了(同基本...

结构体数组指针可以直接赋值给结构体指针吗
这话要说清楚,“结构体数组指针”的说法就是指数组元素的指针,它就是“结构体”类型,当然是可以直接赋给“结构体”指针的。但“结构体数组指针”也可以理解为数组的指针,这时指针的类型是(*)[X]型(X是数组长度或叫数组元素个数),这时由于类型不匹配就不能直接赋给了。

结构体stu1中成员age非法引用什么意思
两种方式如下:结构体引用结构体重成员需要两种方式,一种新定义结构体变量名结构体成员。另一种是用指结构体结构体数据类型,结构体成员。

如下图,结构体中数据占内存为什么是12字节,输出结果第二行ud.i,ud...
union,就是一个箱子,因为要装下大件的物品所以空间要有最大件物品那么大;struct,就是多个箱子合成的一个箱子,因为一些强迫症问题(对齐为机器字长好操作)要组成一个每个小箱子大小都差不多的大箱子;(用#pragma pack(1)可以取消,#pragma pack(push)跟#pragma pack(pop)可以暂存恢复字节对齐)值,...

关于C++的基础问题:在结构体中能够定义string变量???
string是标准库中的复杂对象,并不是C++内建数据类型。所以不支持那种大括号内跟一个字符串的初始化赋值方式。解决办法是使用结构体的构造函数。struct test { test(const char* s): str(s){} string str;};int main(){ test test1("strtest");return 0;} ...

结构体中的成员可不可以是结构体名的指针?
这不算是递归,在结构体中可以有该结构体的指针,如链表的实现就是这样的。在C++中还可以包含该结构体的引用,但是不能包含该结构体的变量。

c语言中结构体变量可不可以直接付给同类结构体变量
不推荐这样做,但是有些情况会成功,有些特殊情况会失败。如果不需要动态分配内存,应该是可以的 比如 struct A { int a;char b[3];};如果需要动态分配内存,比如下面的,就不可以,因为赋值,也只是指针的赋值,释放内存是会导致异常。struct A { char *p;};所以不推荐直接赋值,你可以写一个...

请教,结构体变量的名字可以赋值给一个指针吗?
不可以,结构体变量的地址只能赋给结构体指针。

结构体中这个中括号是什么意思?
表示name是一个数组,这句话的作用是定义一个char型的数组,数组元素个数为name_len+1个

怎么用SCANF给结构体赋值啊,我赋值后只有输出了第一个
结构体不可以用scanf,strcpy,memcpy等函数赋值。但是一般socket编程中能用到。方式为两边定义一样的结构体(以你的结构体为例)memcpy(buff,ps,sizeof(ps));send(buff);接收端可以recv(ps)直接用结构体接收。但是还需说明一点 这样用 结构体中不可以有指针。

马边彝族自治县18084703365: 在结构体中如下给结构体内的指针赋初值,可以吗?正确方式是什么 -
韩质曲必: a={"chengu",27,&b},你这么赋值的时候,b还没有定义,当然会出错了.struct student {char number[10]; int age; student *next; }c={"erpeng",29,NULL}, b={"xiaokai",26,&c}, a={"chengu",27,&b};

马边彝族自治县18084703365: 怎样在函数中为结构体指针数组赋值? -
韩质曲必: 在函数中给结构体指针数组赋值,分两种情况了,第一,若你已经有结构体对象,只是要将指针指向已经分配内存的结构体,可以用取地址的&来给指针赋值;第二,若你只定义了结构体指针,可用malloc给指针初始化,如:已经有struct student结构体,定义student *p;给p初始化则用 p=(student*)malloc(sizeof(student)).

马边彝族自治县18084703365: C语言给结构体指针赋值 -
韩质曲必: struct student {char name[20];};void main() { struct student *st[99];st[5]=(struct student*)calloc(1, sizeof(struct student)); sprintf(st[5]->name, "xyz");}

马边彝族自治县18084703365: 给结构体中的函数指针成员赋值 -
韩质曲必: 结构体是将很多变量集中到一个变量中,可以将许多有关联的变量一起管理,使得代码更容易管理,也更容易理解.结构体变量的赋值必须是分开赋值1 .申明的时候赋值可以直接赋值.如:struct abc abcd={fun1,fun2,fun3};2. 若申明的时候不赋...

马边彝族自治县18084703365: 如何给结构体数组赋初值? -
韩质曲必: 举例如下: char a[10]; 1、定义的时候直接用字符串赋值 char a[10]="hello"; 注意:不能先定义再给它赋值,如 char a[10]; a[10]="hello"; 这样是错误的! 2、对数组中字符逐个赋值 char a[10]={'h','e','l','l','o'}; 3、利用strcpy char a[10]; strcpy(a,...

马边彝族自治县18084703365: 给结构体中的函数指针成员赋值
韩质曲必: 好问题~~*(void **)&william.sheild= belle 是先取william.sheild的地址,然后强制转为指向指针的指针,然后再对其赋值经过调试发现:*(void **)&william.sheild = belle;这种方式更为鲁棒可以试试将void(* sheild)(void);声明为不同类型.比如int(* sheild)(void);tag1的赋值方式将报错,而后者则可以通过所以作者的用意应该是:就算不知道所需函数的返回类型,也可以正确实现调用

马边彝族自治县18084703365: 关于给函数指针作为结构体成员,对其赋值 -
韩质曲必: &是为了取地址,这时是一个指针,然后又把这个指针强制转换下,最后用*表示指向强制转换过的指针指的东西,只是为了防止类型不符.我也感觉很麻烦

马边彝族自治县18084703365: C51编程:结构体里的指针的调用和赋值 -
韩质曲必: .h 一般是声明变量,函数,类 不是定义变量用的所以楼主需这样更改:在.h文件中这样写:typedef struct UART_str { unsigned char *dat; unsigned char num; } UART; extern UART uart; //声明外部变量然后在.c文件中定义变量UART uart;uart.num=0;uart.Dat=0; 即可.

马边彝族自治县18084703365: 结构体指针赋值 -
韩质曲必: 您好:struct a *b; 只定义了一个指针变量,却没有给它赋有效值... 修改下下: struct a *b; ==>> struct a *b, _b; b = &_b; 或者,不定义指针,直接将b定义为普通变量.

马边彝族自治县18084703365: C语言结构体指针的初始化应该怎样理解? -
韩质曲必: 1、structs{charc;inti;};struct*p1;/*p1是指向s结构体的指针*/2、typedefstruct{charc;inti;}s,*ps;s*p2;/*p2是指向结构体的指针*/psp3;/*p3是指向s结构体的指针*/

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网