gpt4 book ai didi

c - 如何使用 strcpy 将值存储在常量变量中?

转载 作者:太空宇宙 更新时间:2023-11-04 02:57:21 26 4
gpt4 key购买 nike

从网上练习测试中找到这个示例代码,声明如何strcpy(e1.name, "K"); 有效,但声明 e1.age=10; 不是?任何原因。请澄清。

观察到 Gcc 上的 o/p 为:K 0 0.000000

#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 时,编译器知道e1const 并禁止写入。

另一方面,当您调用 strcpy 时,会将一个指针传递给在(标准)库中实现的函数。因为它只是一个内存地址,所以这个库只会执行它的写操作。

这是不允许的,因为指针实际上是 const 对象的内存地址。编译器会告诉您这是不允许的,只会产生警告。严格来说,这个警告应该是一个错误。

关于c - 如何使用 strcpy 将值存储在常量变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15990417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com