c语言结构体数组赋值问题 如果用同一个结构体定义了2个不同的数组1和数组2。可以 数组1=数组2;
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言结构体数组赋值问题 如果用同一个结构体定义了2个不同的数组1和数组2。可以 数组1=数组2;相关的知识,希望对你有一定的参考价值。
c语言结构体数组赋值问题
如果用同一个结构体定义了2个不同的数组1和数组2。可以 数组1=数组2;如果用同一个结构体定义了2个不同的数组1和数组2。可以 数组1=数组2;这样整体赋值吗
不可以,要是指针的赋值就可以,例如
typedef struct aint y;
;
int main()
struct a aa[3]=2,4,6;
struct a *bb;
bb=aa;
printf("%d",(bb[0]).y);
return 0;
追问
如果我bb的值,会影响aa的值吗。aa和bb是共用同一段地址吗
如果我改变bb的值,会影响aa的值吗。aa和bb是共用同一段地址吗
追答要是如我上述所写那样,那么aabb同属一个地址,任何一个改变都全部改变
追问可以不共用吗,就是复制一份。互不影响
参考技术A 我记得这样的数组是不可以的,这样只是把数组2的地址给数组1,两个数组指向同一地址了。c语言怎么结构数据初始化?
C语言结构体类型
变量初始化分为
普通变量
和
数组变量
两种形式,说明如下:
typedef struct
int x,y;
direction
;
direction dir=1,2 ; //普通变量,用一组括起来,成员变量数据间以逗号分隔,按变量定义顺序对应数值。未赋值成员,默认填0
direction move[8]= //数组变量,整体用一组括起来,每一个元素按普通变量格式进行书写,各元素间用逗号分隔。未赋值元素,默认填0
0,0,0,1,1,0,1,1,
2,0,2,1,3,0,3,1
; 参考技术A 向地址0便是空值,其他数据若内容是0便是空值。填充一大片内存区域可以使用memset函数,它的填充长度是按字节计。
整形:int
a
=
0;
字符型:char
a
=
0;
数组:
int
a[20];
memset(
a,
0,
sizeof(int)*20
);
C字符串只需要把第一个字符设为'\0'即可。
当然也可以全部清成0。
char
a[20]
=
"ashdfuih";
memset(
a,
0,
sizeof(char)*20
);
例如有一个结构体Some
x,可以这样清零:
memset(
&x,
0,
sizeof(Some)
);
如果是一个结构体的数组Some
x[10],可以这样:
menset(
x,
0,
sizeof(Some)*10
);
任何一个指针都可以通过直接赋为0变成空指针:
Some*
p
=
0;
另外,虚机团上产品团购,超级便宜 参考技术B 你说的那个是逆序建立n个节点的链表,建完头结点后由于链表中没有其他节点就把头结点的next置为空,这一点如果不明白的话去看链表那一章,有介绍!!!
之后从后往前建立链表!!刚开始是l->next =null
要注意p是每次新建的节点,这样从后往前以此建立链表,只要明白p是每次新建的节点,和从后往前建立,就会明白的!!给你花了张图!!
以上是关于c语言结构体数组赋值问题 如果用同一个结构体定义了2个不同的数组1和数组2。可以 数组1=数组2;的主要内容,如果未能解决你的问题,请参考以下文章