结构体赋值

#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++\结构体的赋值\结构体的赋值\main.c    15    1    结构体的赋值
    //所以在底层我们的结构赋值语句中关于字符数组的操作被改写成了字符串拷贝命令。
    strcpy(s2.name, "letben");
    s2.ID = 2;
    s2.age = 25;
    printf("s2的基本信息:学号:%d,姓名:%s,年龄:%d", s2.ID, s2.name, s2.age);
    getchar();
    return 0;
}
时间: 2024-08-05 23:41:18

结构体赋值的相关文章

C语言中结构体赋值问题的讨论(转载)

今天帮师姐调一个程序的BUG,师姐的程序中有个结构体直接赋值的语句,在我印象中结构体好像是不能直接赋值的,正如数组不能直接赋值那样,我怀疑这个地方有问题,但最后证明并不是这个问题.那么就总结一下C语言中结构体赋值的问题吧: 结构体直接赋值的实现 下面是一个实例: #include <stdio.h> struct Foo { char a; int b; double c; }foo1, foo2; //define two structs with three different field

golang-利用反射给结构体赋值

由于想给一个结构体的部分成员赋值,但是有不知道具体名字,故将tag的json名字作为索引,按照json名字来一一赋值 //将结构体里的成员按照json名字来赋值 func SetStructFieldByJsonName(ptr interface{}, fields map[string]interface{}) { logger.Debug("fields:", fields) v := reflect.ValueOf(ptr).Elem() // the struct varia

读取bin文件,并且按结构体赋值打印

目标:读取一个bin文件,并且将bin文件中的数据,按字节对齐赋值给结构体,并且打印出结构体的内容 目前思路是简单的先将bin文件数据一次性读到一个数组中,再将数组强制转换为结构体 char buff[256] FILE *fp; fp = NULL; fp = fopen(argv[1], "rb"); if (NULL == fp) { printf( "The file was not opened\n"); return; } fread(buff, 1,

c语言中的结构体为值类型,当把一个结构体赋值给另一个结构体时,为值传递

#include <stdio.h> int main() { struct person { int age; }; struct person p1 = {19}; //值传递,将p1中所有成员变量的值赋值个p2中对应的成员变量 struct person p2=p1; //改变p1的成员变量的值,不会影响p2中对应成员变量的值 p1.age = 20; printf("p1.age=%d\n",p1.age); printf("p2.age=%d\n&quo

gcc支持的一种结构体赋值方式

struct info{ int a; char b; struct fd{    int c;    int d;          }fg;}; 其实我们也可以这样赋值:同样对于其他的类型也是一样的,union enum.... 例如: struct info td = { .a = 100, .b = 100, .fg = {       .c = 100,       .d = 100,       } }; 或者是这样:struct info td = { .a = 100, .b =

C语言结构体赋值2

#include <stdio.h> /** 上一个版本的name是固定大小的,不好,这次换用 *name然后 采用 堆的方式申请内存,起到用到少拿多少的一个方式. */ struct student{ int ID; char *name; int age; }; struct test{ char str[50]; }; void func1(void); void func2(void); int main(){ //func1(); struct test t1 = { "h

(转)关于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语言_相关函数与结构体

字符串相关函数 //了解 #include<ctype.h> 1. int isalpha(int c); //判断一个字符是否是字母. 2. int isnumber(int c); //判断一个字符是否是表示数字的字符. 3. int isupper(int c); //判断一个字符是否是表示大写字母的字符 4. int islower(int c); //判断一个字符是否是小写字母. 5. int toupper(int c): //将字符转换为大写字母. 6. int tolower(

面向对象基础——结构体

1.结构体的语法 定义的时候需要使用关键字struct [public] struct 结构名 { public 类型名 变量名; … } 我们常见的结构体:System.Drawing.Point.Size.Color 注意: 1.结构使用时可以new,也可以不new.如果不new,则使用前必须为结构成员赋值. 2.在结构中不能为变量直接赋初值,除非const(常量).static(静态变量) 2.结构体与类 它们是 .NET Framework 中的通用类型系统的两种基本构造.两者在本质上都