如何给结构体里的数组复制啊???
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何给结构体里的数组复制啊???相关的知识,希望对你有一定的参考价值。
如,stud是结构体数组,
for(j=0;j<3;j++)
scanf("%d",&stud[i].score[j]);
这样不对,请大神看一下!
可以啊!你看!
#include<iostream>
#include<stdio.h>
using namespace std;
struct Stu
int score[10];
;
int main()
Stu s[2];
for(int i = 0;i < 2;i++)
for(int j = 0;j < 10;j++)
scanf("%d",&s[i].score[j]);
//cin >> s[i].score[j];
for(int i = 0;i < 2;i++)
for(int j = 0;j < 10;j++)
cout << s[i].score[j] << " ";
cout << endl;
return 0;
追问难道说是我的编译器出错???
参考技术B C语言只有在定义字符数组的时候才能用“=”来初始化变量,其它情况下是不能直接用“=”来为字符数组赋值的,要为字符数组赋值可以用string.h。例如:
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头文件。
结构体里的“位域”(bit-field)结构
首先看一个题目:
1 #include <iostream> 2 using namespace std; 3 #include <string.h> 4 typedef struct AA{ 5 int b1:5;//第一个字节的低5位,即b0:b4 6 int b2:2;//b5:b2 7 }AA; 8 9 int main(int argc, char** argv) { 10 AA aa; 11 char cc[100]; 12 strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz"); 13 memcpy(&aa,&cc,sizeof(AA)); 14 cout<<aa.b1<<endl; 15 cout<<aa.b2<<endl; 16 return 0; 17 }
请问,上述代码的输出结果? 答案是-16,1.
第12行,将字符串“0123456789abcdefghijklmnopqrstuvwxyz”赋给字符数组cc.第13行,将大小为sizeof(AA),也就是4个字节(因为只定义了一个int型)的数据赋给aa指向的内存空间。因为cc的前4个字节数据为“0123”,也就是0x30313233,所以aa指向的内存空间的前4个字节数据即为0x30313233,其中第一个字节的二进制为:00110000.而aa.b1是第一个字节的低5位,即10000(-16),同理aa.b2是01(1)
现将上述代码的第11、12行改为:
int cc=0x30313233;
那么,上述代码的输出结果为?答案是-13,1.(在x86平台下)
这是为什么呢?因为x86是小端存储,在执行第13行拷贝的时候,是先将int cc的低位字节的数据拷贝到aa里,所以aa的前4个字节为:0x33323130,其第一个字节为00110011.
以上是关于如何给结构体里的数组复制啊???的主要内容,如果未能解决你的问题,请参考以下文章