我在网上的一个实践测试中发现了这个示例代码strcpy(e1.name, "K");
有效,但语句不是?任何原因。请澄清。
观察到Gcc上的e1.age=10;
为:o/p
#include<stdio.h>
#include<stdlib.h>
struct employee
{
char name[15];
int age;
float salary;
};
const struct employee e1;
int main()
{
strcpy(e1.name, "K"); // How strcpy is being used to store values in a
// constant variable e1 .
//e1.age=10; // not valid
printf("%s %d %f", e1.name, e1.age, e1.salary);
return 0;
}
最佳答案
当您访问age
时,编译器知道e1
是const
并且禁止写入。
另一方面,当调用strcpy
时,指针被传递给在(标准)库中实现的函数。因为它只是一个内存地址,所以这个库将只执行其写操作。
这是不允许的,因为指针实际上是const
对象的内存地址。编译器将告诉您,这是不允许的,但只会产生一个警告。严格地说,这个警告应该是个错误。
关于c - 如何使用strcpy将值存储在常量中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15990417/