精华内容
下载资源
问答
  • 2021-04-28 14:31:32

    我在给结构体中的数组赋值的时候显示,左操作数不能作为左值。左值就是变量,那么也就是说结构体里面的数组是一个常量而不是变量。那么怎么解决这个问题?

    typedef struct student
    {
        char name[20];
        int age;
    }
    
    int main()
    {
        student s;
        s.name = "gay";    // 错误代码
    }

    为什么会出现这种现象哪?先看这一种现象:

    char[20] name;
    name = "gay";

    上面这段代码是不正确的,但是在定义的同时进行赋值就不会产生错误。

    char[20] name = "gay";

    上面这段代码是正确的代码。那么只要在定义字符数组的同时给字符数组赋初值就可以了。

    具体用strcpy,或者是strcpy_s函数,后者是前者的安全方法。

    用法如下:

    strcpy(name, "gay");

    strcpy_s(name, 20, "gay");

    如果结构体中的数组类型为自定义类型,则使用memcpy函数

    memcpy(name, "gay", 20);

    当然,如果结构体中的数组类型为char,也可以把其改为string,这样就可以直接赋值了。

    更多相关内容
  • 用实例教你给结构体中数组成员赋值
  • 在对结构体变量的一个成员进行赋值时,发现不能够正常赋值,查看了下访问方式,指针->成员名也没有问题,后面猛然醒悟:对于字符数组的“赋值”可不能这么简单,首先其数组名指代首元素地址,首先这个地址所...

    在对结构体变量中的一个成员进行赋值时,发现不能够正常赋值,查看了下访问方式,指针->成员名也没有问题,后面猛然醒悟:对于字符数组的“赋值”可不能这么简单,首先其数组名指代首元素地址,首先这个地址所指向的内存空间能否放下源变量就成了一个问题,所以可以用字符串拷贝的方法

    完美解决

    展开全文
  • 说到C语言结构体数组的同时赋值,许多人一想就会想到用以下的这种方法,咱们来写一个例子: #include struct student { int a; int b ; int c ; }; struct student array1[1000] ; int main(void) { int i ; ...
  • 向结构体或结构体数组中赋值

    千次阅读 2021-11-20 19:38:43
    一:结构体 方式1 #include<bits/stdc++.h> using namespace std; struct Node{ string name; int grade; }; int main(){ Node * node = new Node(); node->grade = 100; node->name = "wyj"; ...

    一:结构体

    方式1

    #include<bits/stdc++.h>
    using namespace std;
    
    struct Node{
    	string name;
    	int grade;
    };
    
    
    int main(){
    
    	Node * node = new Node();
    	node->grade = 100;
    	node->name = "wyj";
    	
    	Node *node1 = new Node();
    	node1->grade = 200;
    	node1->name = "wnd";
    	
    	cout << node->name << ' ' << node->grade << endl;
    	cout << node1->name << ' ' << node1->grade;
    	
    	
    } 
    

    方式二

    #include<bits/stdc++.h>
    using namespace std;
    
    struct Node{
    	string name;
    	int grade;
    };
    
    
    int main(){
    	
    	//如果想要赋值,那么我们就先申请一个结点 
    	Node node;
    	node.grade = 100;
    	node.name = "王大爷";
    	
    	cout << node.grade << ' ' << node.name << endl;; 
    	
    	//再来一个结点 但是结点的名称不同 
    	Node node1;
    	node1.grade = 100;
    	node1.name = "王二爷";
    	
    	cout << node1.grade << ' ' << node1.name; 	
    } 
    

    二:结构体数组

    方式一

    #include<bits/stdc++.h>
    using namespace std;
    
    struct Node{
    	string name;
    	int grade;
    }node[100];
    
    int main(){
    	
    	//因为这里我们是已经定义好结构体数组的大小所以直接赋值即可 
    		
    	for(int i = 0; i < 2; i++){
    		cin >> node[i].name >> node[i].grade;
    	}
    	
    	for(int i = 0; i < 3; i++){
    		cout << node[i].name << ' ' << node[i].grade << endl;
    	}	
    } 
    

    方式二:

    #include<bits/stdc++.h>
    using namespace std;
    
    struct Node{
    	string name;
    	int grade;
    };
    
    int main(){
    	
    	Node * stu = new Node[100];
    		
    	for(int i = 0; i < 2; i++){
    		cin >> stu[i].name >> stu[i].grade;
    	}
    	
    	for(int i = 0; i < 2; i++){
    		cout << stu[i].name << ' ' << stu[i].grade << endl;
    	}	
    } 
    
    展开全文
  • 要为字符数组赋值可以用string.h头文件的strcpy函数来完成。 例如: char a[10] = "123"; /*正确,在定义的时候初始化*/ char a[10]; a = "123"; /*错误,不能用“=”直接为字符数组赋值*/ strcpy(a, "123"); /*.

    C语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,之所以不能赋值成功,是因为数组名是一个指针常量,指向固定地址,再对其赋值即改变其指向的地址,作为常量自然不同意。

    要为字符数组赋值可以用string.h头文件中的strcpy函数来完成。

    例如:
    char a[10] = "123"; /*正确,在定义的时候初始化*/
    char a[10];
    a = "123"; /*错误,不能用“=”直接为字符数组赋值*/
    strcpy(a, "123"); /*正确,使用strcpy函数复制字符串*/
    所以要对game[0][0].cpart赋值应该用strcpy(game[0][0].cpart, "123");才对。
    注意要使用strcpy函数要用#include <string.h>包含string.h头文件。

    给C语言结构体中的char数组赋值有两种方式:

    1、在声明结构体变量时赋值:

    //#include "stdafx.h"//If the vc++6.0, with this line.
    
    #include "stdio.h"
    
    struct stu{
        int x;
        char name[10];
    };
    
    int main(void){
        struct stu s={8,"123"};//这样初始化
        printf("%d %s\n",s.x,s.name);
        return 0;
    }

    2、向数组直接拷贝字符串:

    //#include "stdafx.h"//If the vc++6.0, with this line.
    
    #include "stdio.h"
    #include "string.h"
    
    struct stu{
        int x;
        char name[10];
    };
    
    int main(void){
        struct stu s;
        strcpy(s.name,"abcd");//向name拷贝字符串
        s.x=128;
        printf("%d %s\n",s.x,s.name);
        return 0;
    }

    展开全文
  • C语言 如何给结构体中数组赋值

    千次阅读 2020-07-31 11:59:47
    在建立socke通信的t过程,我想将所有变量都封装在一个结构体中,但是其中 IP地址需要数组保存,无法直接赋值; 偶然间看到了处理方式 示例 #include <stdio.h> #include <string.h> typedef struct ...
  • day16.2-结构体数组赋值

    千次阅读 2022-04-25 13:51:24
    一、用下标手动字符数组赋值>二、通过strcpy赋值>三、结构体数组赋值>四、作业
  • c语言 结构体数组赋值

    千次阅读 2021-10-17 11:07:40
    c语言 结构体数组赋值 //**创建结构体** #include<stdio.h> struct Class{ int id; char name[10]; }; //******结构体数组赋值 int main(){ int m; //定义结构体数组的长度所需变量 int i; printf(...
  • C语言结构体数组赋值与取值
  • C语言 变量、数组结构体中赋值

    千次阅读 2019-05-16 10:52:04
    C语言指针-赋值篇问题来源变量赋值数组赋值结构体赋值 今天主要就是一个 关于 C语言变量、数组、结构体等 赋值的一篇文章 问题来源 今天有个同学问了我一个问题? ![定义了一个结构体]...
  • C通过结构体给整个数组赋值

    千次阅读 2019-03-08 20:31:08
    那么怎么整个给数组赋值呢,我们可以借助结构体给整个数组赋值 #include&lt;stdio.h&gt; struct s_tag { int a[100]; }; struct s_tag orange, lime, lemon; struct s_tag twofold(struct s_tag s) {...
  • 目录 一、按照成员变量进行赋值(麻烦,好理解,字符串赋值需要strcpy) 二、对数组整体进行赋值。(一次性需要把所有的都添加进去,...(2)调用函数赋值,我们知道,结构体数组中,数组有多个元素,每个数组元素...
  • 数组定义: char acBuf[sizeof(TRANS_HEAD_S) + sizeof(USER_HEAD_S) + 4] = {0}; 结构体定义: typedef struct { int iOne; int iTwo; int iThr; }TRANS_HEAD_S; typedef struct { int iUser; }USER.....
  • 如下: 上面说到一般情况下数组名代表首元素地址,那么什么时候数组名不是首元素地址呢? 如下: 希望对您有所帮助 如有学术问题敬请纠正 
  • C++ 结构体指针与结构体数组赋值

    万次阅读 2019-07-18 22:15:39
    对于结构体指针,可以用来指向结构体数组的首地址,但是不能按照结构体数组赋值方式进行赋值,感觉是无法预知后面批量赋值的大小。具体情况见以下代码: #include <iostream> using namespace std; ...
  • C语言结构体结构体中数组初始化与赋值

    万次阅读 多人点赞 2018-01-03 10:18:33
    最近写c语言结构体遇到了些问题,从网上找了些资料如下: 结构体是连续存储的,但由于结构体中成员类型各异,所以会存在内存对齐问题,也...1.结构体的定义和赋值 结构体是可以直接初始化的,在定义的时候,就可
  • 结构体数组、append var classOne Class var classList []Class for ....:取到值先赋classOne,再用classList = append(classList, classOne) 3. 接口返回 含数组的结构体 常用写法 type RespData struct { ...
  • C++ 结构体中数组可以直接赋值

    万次阅读 2017-11-25 15:40:46
    一直记得C语言结构体是不可以直接赋值的,需要逐一成员赋值或者用memcpy函数。 但是在C++可以(无需重载=运算符),需要区分以下3种情况: #include #include using namespace std; ...
  • //创建方向试探数组结构体 typedef struct{ int incX;//x方向的增量 int incY;//y方向的增量 }Direction; //方向试探数组结构体赋值 Direction ...//向上移动一格 如题,想给结构体类型的数组赋值,该怎么操作呢?
  • 定义嵌套结构体数组

    2017-01-21 16:29:28
    定义复杂结构体—包括嵌套结构体数组,并显示结构体所占字节数。
  • Matlab 结构体数组批量赋值

    千次阅读 2020-07-25 17:20:45
    老实说,不是很懂,但确实可以用 代码 clear;clc; Cncs=struct('past_time', {1,1,1,1,1,1,1,1}); [Cncs.past_time] A = mat2cell(1:8,1,ones(1,8)); [Cncs.past_time] = A{:}; [Cncs.past_time] ... 1 2
  • ``` typedef struct _Teacher{ char name[20]; int age; }Teacher; void main(){ Teacher t1;...求大牛个详细的解释,对于abc C++编译器是如何处理的?是分配内存放在全局区,还是当做字面值
  • 给结构体中字符数组赋值

    万次阅读 2018-10-24 16:43:20
    先看一段代码:   #define _CRT_SECURE_NO_WARNINGS 1 #include ...//直接赋值 ...(1)首先,其实是忘记了C++的基础问题,C++里面只要涉及char都不...总结:结构体字符数组赋值必须用字符串函数,不能直接进行赋值
  • 结构体数组赋值的问题

    万次阅读 多人点赞 2018-06-29 16:03:34
    C语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,要为字符数组赋值可以用string.h头文件的strcpy函数来完成。 例如: char a[10] = "123"; /*正确,在...
  • 指向结构体类型数组的指针的使用

    千次阅读 2021-05-21 05:10:37
    指向结构体类型数组的指针的使用定义一个结构体类型数组,其数组名是数组...[例7-3] 在例7 - 2定义了结构体类型,根据此类型再定义结构体数组及指向结构体类型的指针。struct data{intday,month,year;};struct stu...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 88,401
精华内容 35,360
关键字:

给结构体中的数组赋值