gpt4 book ai didi

c - 使用 const 运算符发出警告(在结构中)

转载 作者:行者123 更新时间:2023-12-02 08:30:08 25 4
gpt4 key购买 nike

这可能是个菜鸟问题,但我不明白为什么我会收到警告

struct4.c:32:15: 警告:赋值从指针目标类型中丢弃‘const’限定符[默认启用] crea[i].size = wsize[i%5];

编译这个:

struct shirt {
char *size;
char *colour;
} ;
typedef struct shirt Camicia;

void loadshirt (Camicia * const crea, const char *wsize[] , const char *wcolour[]);


int main (void) {

Camicia collezione[50];

const char *sizearray[] = {"xs","s","m","l","xl"};
const char *colourarray[] = {"black","blue","yellow","orange"};

loadshirt(collezione,sizearray,colourarray);

printf("%s\n",collezione[4].size);
printf("%s\n",collezione[4].colour);

return 0;
}

void loadshirt (Camicia * const crea, const char *wsize[] , const char *wcolour[]) {

int i=0;

while (i<50) {
crea[i].size = wsize[i%5];
crea[i].colour = wcolour[i%4];
i++;
}
}

最佳答案

您将结构的数据成员定义为指向非常量 字符串的指针。

struct shirt {
char *size;
char *colour;
} ;

但是在函数中,您将指向 const 字符串的指针分配给指向 non-const 字符串的指针

crea[i].size = wsize[i%5];
crea[i].colour = wcolour[i%4];

参看参数列表中wsize和wcolour的声明

const char *wsize[] , const char *wcolour[]

你不能那样做。

将数据成员定义为指向常量字符串的指针

struct shirt {
const char *size;
const char *colour;
} ;

或者将参数定义为具有指向非常量字符串的指针类型

char *wsize[] , char *wcolour[]

在这种情况下,您还必须更改相应参数的定义

char *sizearray[] = {"xs","s","m","l","xl"};
char *colourarray[] = {"black","blue","yellow","orange"};

在 C 中,字符串文字具有非常量数组的类型。

关于c - 使用 const 运算符发出警告(在结构中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27842784/

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