函数中使用的结构指针

Jul*_*ian 6 c struct pointers

我在C中有一些带有指针和结构的问题:我有2个结构实体Signal和指向activeSignal存储其中一个实体的指针.现在,我想在我的函数中使用这个"存储"实体printParameters()来打印我的struct的值.不幸的是,我的微控制器显示器打印出一些象形文字而不是我的价值.我不得不承认我并没有完全通过指针算术来查看......

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);
}
Run Code Online (Sandbox Code Playgroud)

Sou*_*osh 1

在这里,您的代码中有一些小错误。我相信这些都是拼写错误。

  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);
}
Run Code Online (Sandbox Code Playgroud)

我用 simpleprintf()而不是你的lcdPrintf(),但效果很好。

输出:

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

矩形