请教:结构体内定义一个数组可以直接赋初值吗?
最近没活干,学习一下单片机。{:smile:} 请教一下,在结构体内定义的数组可以直接赋初值吗?如果不行怎么初始化这个数组的值呢?struct Ti
{
unsigned long Ti_All;
unsigned long Ti_Ok;
unsigned char Ti_Temp={0,1,2,3,4,5,6,7,8,9};//这里编译不过去有错误!
unsigned char CRC_T0;
unsigned char CRC_T1;
//struct RI *RI_PX;
}TiData;//发送数据存储区 找本C语言书看看 应该有答案 struct Ti
{
unsigned long Ti_All;
unsigned long Ti_Ok;
unsigned char Ti_Temp;
unsigned char CRC_T0;
unsigned char CRC_T1;
//struct RI *RI_PX;
}TiData={.Ti_Temp={1,2,3,4,5,6,7,8,9}};
我对语法也不太清楚,试试上面的呢? lcofjp 发表于 2013-3-19 18:03 static/image/common/back.gif
struct Ti
{
unsigned long Ti_All;
结构体中的每个成员都赋值 才能编译过去 yklstudent 发表于 2013-3-19 19:06 static/image/common/back.gif
结构体中的每个成员都赋值 才能编译过去
c99语法可给部分成员初始化。 本帖最后由 yklstudent 于 2013-3-19 19:49 编辑
lcofjp 发表于 2013-3-19 19:09 static/image/common/back.gif
c99语法可给部分成员初始化。
哦在PICC9.80平台下 测试了下 好像不可以部分赋初值
我在多试试几个平台看看
C51下测试不允许 GCC下允许难道C51不支持C99标准??? yklstudent 发表于 2013-3-19 19:39 static/image/common/back.gif
哦在PICC9.80平台下 测试了下 好像不可以部分赋初值
我在多试试几个平台看看
跟c51没关系,是编译器的事 lcofjp 发表于 2013-3-19 20:03 static/image/common/back.gif
跟c51没关系,是编译器的事
哦没表达清楚 我意思是指keil编译器难道不支持C99标准吗????
struct Ti
{
unsigned long Ti_All;
unsigned long Ti_Ok;
unsigned char Ti_Temp;
unsigned char CRC_T0;
unsigned char CRC_T1;
//struct RI *RI_PX;
}TiData={.Ti_Temp={1,2,3,4,5,6,7,8,9}};
我对语法也不太清楚,试试上面的呢?----这样也没编译过,刚跑完步累吐血了!一会静心下来再学习,谢谢各位! yklstudent 发表于 2013-3-19 20:07 static/image/common/back.gif
哦没表达清楚 我意思是指keil编译器难道不支持C99标准吗????
keil对c的支持很差的。
像for(int i=0; i<10; i++);这样的语法都不行。
可能是还未支持c99 lcofjp 发表于 2013-3-19 20:14 static/image/common/back.gif
keil对c的支持很差的。
像for(int i=0; i
恩 你说的也是 谢谢了 结构体中的是申明!不是定义,定义要在下面! 还是没搞明白怎么赋初值,结构内部不是声明,是定义才对吧,都分配内存空间了!还请懂的老师教教我,手里只有一本《单片机C语言轻松入门》这书没有这方面的内容。实在没办法了只好写了一个数组拷贝函数将就用着完成实验。定义了一个CODE型数组K,用下面函数COPY到结构体内数组Ti_Temp,很笨的办法{:dizzy:}但能用了。
void Data_Copy(unsigned char *S,unsigned char *K)//将K指向的地址内数据COPY=10个到S地址所指向的地址内
{
unsigned char m;
for(m=0;m<10;m++,S++,K++)
*S=*K;
} struct Ti
{
unsigned long Ti_All;
unsigned long Ti_Ok;
unsigned char Ti_Temp;//这里编译不过去有错误!
unsigned char CRC_T0;
unsigned char CRC_T1;
//struct RI *RI_PX;
}TiData = {0,0,{0,1,2,3,4,5,6,7,8,9},0,0};//发送数据存储区
都和三楼的兄弟讨论了半天 楼主竟然还不知道怎么赋值
只能写个keil C51下的 呵呵,我真的是力工出身,路边捡到本:《单片机C语言轻松入门》看了些日子,没系统学习过C语言,真看不懂你们讨论的C99标准是什么。你要是直白点告诉我:不能部分赋初值,要一次性赋全部,我就明白了。非常谢谢你!(你认识你头像中的女人吗?{:lol:}太邪恶了!)结构体和int,char是同级别的数据类型,就像你没法硬操作char,int中的几位。我就这样理解算了!
页:
[1]