当前位置: 技术问答>linux和unix
让我迷惑的结构体赋值问题
来源: 互联网 发布时间:2016-03-26
本文导语: 代码如下: 1 #include 2 3 struct point 4 { 5 int x; 6 int y; 7 }; 8 int main( void ) 9 { 10 struct point pt = {0, 0}; 11 pt = {1, 1}; 12 pt.x = 2; 13 pt.y ...
代码如下:
1 #include
2
3 struct point
4 {
5 int x;
6 int y;
7 };
8 int main( void )
9 {
10 struct point pt = {0, 0};
11 pt = {1, 1};
12 pt.x = 2;
13 pt.y = 2;
14 printf( "%d,%dn",pt.x,pt.y);
15 return 0;
16 }
编译结果如下:
array.c: In function 醻榤main醻?
array.c:11: error: expected expression before 醻榹醻 { token
请问为什么11行会出现错误?结构体赋值到底要注意那些?
1 #include
2
3 struct point
4 {
5 int x;
6 int y;
7 };
8 int main( void )
9 {
10 struct point pt = {0, 0};
11 pt = {1, 1};
12 pt.x = 2;
13 pt.y = 2;
14 printf( "%d,%dn",pt.x,pt.y);
15 return 0;
16 }
编译结果如下:
array.c: In function 醻榤main醻?
array.c:11: error: expected expression before 醻榹醻 { token
请问为什么11行会出现错误?结构体赋值到底要注意那些?
|
对结构体直接赋初值只能在定义的时候。看看C的语法吧。
另外可以的赋值方法:
1.对其中的每个变量分别赋值。如上12,13;
2.直接用=;(不建议)
struct point tmp;
pt = tmp;
3.memcpy
struct point tmp;
memcpy(&pt,&tmp,sizeof(struct point));
...
另外可以的赋值方法:
1.对其中的每个变量分别赋值。如上12,13;
2.直接用=;(不建议)
struct point tmp;
pt = tmp;
3.memcpy
struct point tmp;
memcpy(&pt,&tmp,sizeof(struct point));
...
|
初始化时可以使用这种赋值方式, 初始化之后就别这么弄了