结构体中的数组赋值赋值给数组,必须内存拷贝吗

2009年1月 C++ Builder大版内专家分月排行榜第二2008年11月 C++ Builder大版内专家分月排行榜第二
2008年10月 C++ Builder大版内专家分月排行榜第三2008年9月 C++ Builder大版内专家分月排行榜第三
2008年10月 C++ Builder大版内专家分月排行榜第二
2008年12月 C++ Builder大版内专家分月排行榜第三
2009年1月 C++ Builder大版内专家分月排行榜第二2008年11月 C++ Builder大版内专家分月排行榜第二
2008年10月 C++ Builder大版内专家分月排行榜第三2008年9月 C++ Builder大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。怎么把结构体里面的数据复制到一个数组里面-CSDN论坛
怎么把结构体里面的数据复制到一个数组里面
typedef&struct
uchar&&&&&//年,芯片以2000年为基数,如2014年,只需要赋值14即可
uchar&&&&//月
uchar&&&&&&//日
uchar&&&&&//时
uchar&&&//分
uchar&&&//秒
uchar&&&&//星期几(星期日0)
复制这个结构体,并打印出来
#include&&stdio.h&
typedef&unsigned&char&
typedef&struct
uchar&year&&;//年,芯片以2000年为基数,如2014年,只需要赋值14即可
uchar&month&;//月
uchar&day&&&;//日
uchar&hour&&;//时
uchar&//分
uchar&//秒
uchar&weekn&;//星期几(星期日0)
TDS1302&a;
uchar&b[7];
int&main()&{
&&&&a.year&&=15;
&&&&a.month&=11;
&&&&a.day&&&=13;
&&&&a.hour&&=12;
&&&&a.minute=43;
&&&&a.second=56;
&&&&a.weekn&=&5;
&&&&b[0]=a.year&&;
&&&&b[1]=a.month&;
&&&&b[2]=a.day&&&;
&&&&b[3]=a.hour&&;
&&&&b[4]=a.
&&&&b[5]=a.
&&&&b[6]=a.weekn&;
&&&&printf("20%d-%02d-%02d&%02d:%02d:%02d&星期%.2s\n",
&&&&&&&&b[0],
&&&&&&&&b[1],
&&&&&&&&b[2],
&&&&&&&&b[3],
&&&&&&&&b[4],
&&&&&&&&b[5],
&&&&&&&&"日一二三四五六"+2*b[6]);
&&&&return&0;
//&12:43:56&星期五
引用&楼主&qq_&的回复:typedef&struct
uchar&&&&&//年,芯片以2000年为基数,如2014年,只需要赋值14即可
uchar&&&&//月
uchar&&&&&&//日
uchar&&&&&//时
uchar&&&//分
uchar&&&//秒
uchar&&&&//星期几(星期日0)
复制这个结构体,并打印出来&&能不能用memcpy函数。
不能用memcpy函数,因为有对齐问题。参考下面:
#include&&stdio.h&
#define&field_offset(s,f)&(int)(&(((struct&s&*)(0))-&f))
struct&AD&&{&int&a;&char&b[13];&double&c;};
#pragma&pack(push)
#pragma&pack(1)
struct&A1&&{&int&a;&char&b[13];&double&c;};
#pragma&pack(2)
struct&A2&&{&int&a;&char&b[13];&double&c;};
#pragma&pack(4)
struct&A4&&{&int&a;&char&b[13];&double&c;};
#pragma&pack(8)
struct&A8&&{&int&a;&char&b[13];&double&c;};
#pragma&pack(16)
struct&A16&{&int&a;&char&b[13];&double&c;};
#pragma&pack(pop)
int&main()&{
&&&&printf("AD.a&%d\n",field_offset(AD,a));
&&&&printf("AD.b&%d\n",field_offset(AD,b));
&&&&printf("AD.c&%d\n",field_offset(AD,c));
&&&&printf("\n");
&&&&printf("A1.a&%d\n",field_offset(A1,a));
&&&&printf("A1.b&%d\n",field_offset(A1,b));
&&&&printf("A1.c&%d\n",field_offset(A1,c));
&&&&printf("\n");
&&&&printf("A2.a&%d\n",field_offset(A2,a));
&&&&printf("A2.b&%d\n",field_offset(A2,b));
&&&&printf("A2.c&%d\n",field_offset(A2,c));
&&&&printf("\n");
&&&&printf("A4.a&%d\n",field_offset(A4,a));
&&&&printf("A4.b&%d\n",field_offset(A4,b));
&&&&printf("A4.c&%d\n",field_offset(A4,c));
&&&&printf("\n");
&&&&printf("A8.a&%d\n",field_offset(A8,a));
&&&&printf("A8.b&%d\n",field_offset(A8,b));
&&&&printf("A8.c&%d\n",field_offset(A8,c));
&&&&printf("\n");
&&&&printf("A16.a&%d\n",field_offset(A16,a));
&&&&printf("A16.b&%d\n",field_offset(A16,b));
&&&&printf("A16.c&%d\n",field_offset(A16,c));
&&&&printf("\n");
&&&&return&0;
//A16.c&24
memcp就行了
同一类型的,可以不过不靠谱
毕竟依赖预编译器的实现特性
虽然编译器都是这么实现的,但是不知道有没有成为标准。&
没看懂啥意思,
数组要同类型数据的啊,结构体里又不是都像这个一样都是相同的,
有没有大师点播我一下

我要回帖

更多关于 结构体二维数组赋值 的文章

 

随机推荐