【发布时间】:2015-01-28 08:39:53
【问题描述】:
嘿,我是编程新手(通过 C 语言中的 cs50x 学习),当他们提到结构时,我决定试着绕开,只是编写一个快速程序,使用函数交换结构中的一些值。我一直在运行,直到出现几条错误消息,其中第一条是“不兼容的指针类型将'struct numbers*'传递给'struct numbers*'类型的参数。另一个问题似乎出现在函数定义中,编译器说“不完整“结构编号”类型的定义”我只是希望能得到一些帮助,因为我很难过。
这是代码(我知道它很粗糙,但我正在学习,哈哈)
#include <stdio.h>
struct numbers;
void swap(struct numbers* s);
int main(void)
{
struct numbers
{
int a;
int b;
int c;
};
struct numbers x = {1, 5 , 9};
swap(&x);
printf("%i, %i, %i\n", x.a, x.b, x.c);
return 0;
}
void swap(struct numbers* s)
{
int temp = s -> a;
int temp2 = s -> b;
s -> a = s -> c;
s -> b = temp;
s -> c = temp2;
}
【问题讨论】:
-
“main 内部定义的结构编号”和“任何函数外部的结构编号”被认为是不同的类型。将定义移到
main之外。 -
欢迎来到 SO。虽然问题通常没问题,但如果下次发布问题时指定哪个行引发每个错误,每个人都会更容易。不要忘记将解决您的问题的答案之一(如果有的话)标记为解决方案。
-
如前所述,将
struct定义设为全局。此外,在处理不同事物的行之间放置额外的空间(例如在您的#include之后,C 不关心缩进。您可能还想在printf中使用%d,它更常见。跨度>
标签: c