gpt4 book ai didi

c - 使用 char 初始化结构的函数 - 解释一下我的警告吗?

转载 作者:行者123 更新时间:2023-11-30 18:26:32 26 4
gpt4 key购买 nike

有谁知道为什么下面的代码不能与 char 一起使用?它适用于 int ,但是当我想使用 char 来初始化结构时,它会失败并给出如下警告:

warning: assignment makes integer from pointer without a cast

我不知道这个警告是什么意思。

#include <stdio.h>
#include <stdlib.h>

struct complex {
int re;
int im;
char name;
};

struct complex initialize (int k, int l, char nazwa)
{
struct complex x;
x.re = k;
x.im = l;
x.name= nazwa;
return x;
}


int main ()
{
struct complex e;
struct complex f;
int a;
int b;
char o;
int c;
int d;
char p;
a=5;
b=6;
o="t";
e = initialize (a, b, o);
c=8;
d=3;
p="u";
f=initialize (c, d, p);
printf("c1 = (%d,%d)\nc2 = (%d,%d)\n name 1=%s name 2=%s\n", e.re , e.im, f.re, f.im, e.name, f.name);

return 0;
}

最佳答案

"u" 不是字符。它是一个字符串。一个字符数组。你需要 'u' 来代替。但这样一来,您将只有一个字符的名称,并且需要将 printf 中的 %s 替换为 %c

除非您确实想要一个字符串,如果是这样,请将结构中的 char 更改为 const char*。函数参数也是如此:

struct complex {
int re;
int im;
const char* name;
};

struct complex initialize (int k, int l, const char* nazwa) {
...
}

const char* o;
const char* p;

请注意,您可以初始化变量和结构。你的代码可以是这样的:

void print_complex(int n, struct complex c) {
printf("c %d = (%d,%d)\n", n, c.re , c.im);
printf("name=%s\n", c.name);
}

int main () {
struct complex e = { 5, 6, "t" };
struct complex f = { 8, 3, "u" };
print_complex(1, e);
print_complex(2, f);
return 0;
}

关于c - 使用 char 初始化结构的函数 - 解释一下我的警告吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16763962/

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