gpt4 book ai didi

c - 结构元素无法分配这个问题,但我无法得到适当的结果?

转载 作者:行者123 更新时间:2023-11-30 19:45:14 27 4
gpt4 key购买 nike

hello 结构元素(字符串)如果在对象创建期间未分配,则无法分配,如下代码所示,为什么?我的代码如下,请帮助我理解

 struct st
{
int i;
char ch[10];
char *ch1;
};

int main()
{
struct st var2={"hello"};//this good

struct st var;

var.ch="hello" ; //this bad why?

//then
var.i=9;//is good why?

var.ch1="hello"; //good why?
}

最佳答案

struct st var2={"hello"};//this good

不,这不好。:) 您正在尝试使用指向字符串文字“Hello”的第一个字符的指针来初始化整数变量 i。

var.ch="hello" ; //this bad why?

这确实很糟糕,因为数组没有赋值运算符。您必须使用标准功能 strcpy在 header <string.h> 中声明复制数据成员 ch 中的字符串文字。例如

strcpy( var.ch, "hello" );
var.i=9;//is good why?

var.ch1="hello"; //good why?

这些很好,因为包括指针在内的内置类型(基本类型)具有赋值运算符。

在最后一条语句中,对应于字符串 literal "hello" 的数组被转换为指向其第一个元素的指针,即指向字符“h”的指针,并且该指针被分配给 ch1。

关于c - 结构元素无法分配这个问题,但我无法得到适当的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26739522/

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