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 a

    int 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;的主要内容,如果未能解决你的问题,请参考以下文章

C语言结构体数组排序

C语言,结构体中的数组怎么赋值,?

结构体赋值给数组

c语言结构体能否整体赋值

c语言 结构体的指针作为函数参数问题

c语言怎么用文件保存和读取 结构体数组/