gpt4 book ai didi

c - 函数中使用的结构指针

转载 作者:太空狗 更新时间:2023-10-29 17:26:04 28 4
gpt4 key购买 nike

我在 C 中遇到一些关于指针和结构的问题:我有结构 Signal 的 2 个实体和指针 activeSignal 来存储其中一个实体。现在,我想在我的函数 printParameters() 中使用这个“存储的”实体来打印我的结构的值。不幸的是,我的微 Controller 显示器打印了一些象形文字而不是我的值。我不得不承认我并没有完全通过指针算术...

struct SigParameter {
char *name;
int value;
};

struct Signal {
struct SigParameter signalchar;
};

int main(void) {
struct Signal s1;
struct Signal s2;
s1.signalchar.name = "Sinus";
s2.signalchar.name = "Rect";
struct Signal *activeSignal = &s1;

printParameters(activeSignal);
}

void printParameters(struct Signal *s) {
lcdPrintf(0,11,9,"%s", s->signalchar.name);
}

最佳答案

在这里,您的代码中存在一些小错误。我认为这些是错别字。

  1. printParameters() 没有前向声明。
  2. 在您的 main() 中,调用的函数是 printParameter(),它应该是 printParameters()
  3. struct SigParameter signalchar 后缺少分号

但是,如果您只想打印值,我看不到使用 struct Signal *activeSignal = &s1; 的逻辑。

您可以检查下面的代码。

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


struct SigParameter {
char *name;
int value;
};

struct Signal {
struct SigParameter signalchar;
};

void printParameters(struct Signal s);

int main(void) {
struct Signal s1;
struct Signal s2;
s1.signalchar.name = "Sinus";
s2.signalchar.name = "Rect";

printParameters(s2);
return 0;
}

void printParameters(struct Signal s) {
printf("%s\n", s.signalchar.name);
}

我使用了简单的 printf() 而不是您的 lcdPrintf(),但它工作正常。

输出:

[sourav@broadsword temp]$ ./a.out

Rect

关于c - 函数中使用的结构指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27379913/

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