我知道我可以按成员复制结构成员,而不是我可以在结构上进行复制memcpy吗?
这样做是否明智?
在我的结构中,我有一个字符串也作为成员,我必须复制到具有相同成员的另一个结构.我怎么做?
我是初学C程序员,昨天我学习了C结构的使用以及这些结构可能应用于特定问题的解决方案.然而,当我尝试使用我的C IDE(Codeblocks 16.01)来学习C编程的这个方面时,我遇到了一个奇怪的问题.代码如下:
#include <stdio.h>
#define N 30
typedef struct{
char name[N];
char surname[N];
int age;
} data;
int main() {
data s1;
s1.name="Paolo";
s1.surname = "Rossi";
s1.age = 19;
getchar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在编译期间,编译器(Windows下的GCC 4.9.3-1)向我报告了一个错误
"错误:赋值给表达式,数组类型错误"
在指导上
s1.name="Paolo"
s1.surname="Rossi"
Run Code Online (Sandbox Code Playgroud)
如果我这样做的话
data s1 = {"Paolo", "Rossi", 19};
Run Code Online (Sandbox Code Playgroud)
有用.我究竟做错了什么?
如果我声明两个数组 - arr1并且arr2- 例如,int每个类型大小为10,并初始化第一个数组,并且我希望创建一个arr1in 的副本arr2; 为什么我不能给出指示arr2 = arr1呢?
我知道可以分配两种相同类型的结构.为什么不是阵列的情况?
我试过这样做但是出错了.为什么我不能这样做?
int main()
{
char sweet[5];
sweet = "kova";
printf("My favorite sweet is %s\n", sweet);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 情况1:char s[][6]={"Hello","world"};
在这种情况下,静态数组被分配在只读存储器中,并从那里将元素复制到数组中.在案例2中.
情况2:char* s= "hello world";将它放在只读存储器中.
所以我的问题是为什么
char s[][6]={"Hello","world"};
s[1]="lucky"; //is illegal
Run Code Online (Sandbox Code Playgroud)
因为如果从只读内存复制元素,那么为什么s[1]="lucky";不能将此语句从只读内存复制到数组,因为还为此字符串文字分配了一个数组,并从那里将元素复制到s [1].我已经阅读了很多答案,所有人都在说明有什么区别,但没有人说出原因?请解释,因为我是初学者.