c语言中,结构体的赋值

c语言里,不能直接在定义结构体时,给其中元素赋值。

#include<stdio.h>
#include<malloc.h>
typedef struct tree
{
    int data;
    struct tree *left;
    struct tree *next=NULL;
}zhizhen;
int main()
{
    struct tree *a;
    a=(zhizhen*)malloc(sizeof(zhizhen));
    if(a->next==NULL)
    printf("asdfasdfa\n");
    else
    printf("no\n");
    return 0;
}

结果为:no

时间: 2024-10-29 00:18:41

c语言中,结构体的赋值的相关文章

C语言 结构体指针赋值 incompatible types when assigning to type &#39;char[20]&#39; from type &#39;char *&#39;

strcpy(pstudent->name, "guo zhao wei "); 为什么错误,该怎么写,(红色行) 追问 为什么不能直接赋值啊, 追答 用char nnnn[20]定义的,用strcpy 用char *ppp定义的,用=来赋值 C语言 结构体指针赋值 incompatible types when assigning to type 'char[20]' from type 'char *'

同类型结构体之间赋值不一定有效

同类型结构体之间赋值不一定有效 今天为这个问题debug好久... 之前看到一个关于结构体使用的技巧, 这个技巧能够避免内存零碎. 保证结构体所属内存尽量不要零散化. struct struct_name { element_type varible; ...; element_type  pointer[0]; } 关于该用法的介绍. http://blog.csdn.net/cinmyheart/article/details/28985843 对于普通的结构体, struct num {

(转)关于linux中内核编程中结构体的赋值操作(结构体指定初始化)

网址:http://blog.chinaunix.net/uid-24807808-id-3219820.html 在看linux源码的时候,经常会看到类似于下面的结构体赋值的代码: struct device my_dev = { .bus = &my_bus_type, .parent = &my_bus, .release = my_dev_release, }; 整体上看,貌似与我们平时遇到的结构题赋值差不多,可是在变量前面加了一个点,好像我们就不知道是什么意思了.  上面的这种赋

C和指针 第十二章 结构体 整体赋值 error: expected expression

定义结构体后整体赋值时发生错误 typedef struct NODE { struct NODE *fwd; struct NODE *bwd; int value; } Node; //声明变量 Node first; first = {NULL, &second, 4}; 错误: error: expected expression 之所以不行是,{}内容被当做语句块了,c语言允许直接对结构体初始化,或者在赋值的时候加上类型说明,或者是逐一赋值. 初始化赋值: typedef struct

对于结构体变量赋值的误区

以前在使用结构体时没有在结构体变量之间直接赋值,今天同事在查看别人的代码时,发现有两个结构体变量直接赋值的语句当时感觉这个语句不对,认为在一个结构体里边,既有一般的无符号整形与数组,因为数组的赋值是不能直接赋值,要内存拷贝,从这里推理所以认为这个语句不对.于是问了一下,我当时以为是结构体指针变量的赋值,认为没有问题.还和同事争论了一番,当他让我看源代码时,发现是变量间的直接赋值,下意识中的判断是不对,原因就和之前他理解的一样. 于是晚上到住处在网上查了一下,说是可以的,因为是同样的数据类型,而C

用隐式转换实现类型或结构体直接赋值

在vs中敲一句string s="aaa"; 你会发现string是个class,一般咱们给类型赋值的时候都是先new一个,然后再给其属性赋值,string却能直接赋值,顿时感觉很神奇 当然,在stirng s = "aaa";中,右面的“aaa”它其实就是个string类型,所以直接=是没有问题的 但是,由string s ="aaa";我们就可以提出一个假象,咱们自己定义的class能不能也实现类似的效果呢? 答案显然是肯定的~~~~ 这需要

结构体变量赋值

在android的bootloader源码目录中,发现这个文件lk/app/aboot/aboot.c里面有一个关于结构体的定义,让我有点不太明白,哪位高手来解惑一下? struct atag_tcc_entry{char output;char resolution;}; struct atag_tcc_entry tcc_param = {.output = 0,.resolution = 0,}; 我不太明白的是 为什么truct atag_tcc_entry tcc_param 后面要用

C结构体数组赋值

1 #include <stdio.h> 2 #include <stdlib.h> 3 struct MyStruct 4 { 5 int a; 6 char b; 7 8 }; 9 struct MyStruct hello[]= 10 {1,'a',2,'b' 11 12 }; 13 14 15 int main( ){ 16 printf("%c",hello[0].b); 17 return(0); 18 19 } 有没有怪怪的感觉 :

结构体赋值

#include <stdio.h> struct student{ int ID; char name[48]; int age; }; int main(){ struct student s1 = { 1, "lifei", 24 }; struct student s2; s2 = s1; //s2.name = "letben";//错误 1 error C2106: “=”: 左操作数必须为左值 f:\tryc++\结构体的赋值\结构体的赋值