【发布时间】:2014-12-09 13:20:10
【问题描述】:
我在 C 语言中遇到了一些关于指针和结构的问题:
我有 2 个结构体 Signal 和指针 activeSignal 来存储其中一个实体。现在,我想在我的函数printParameters() 中使用这个“存储”实体来打印我的结构的值。不幸的是,我的微控制器显示器打印了一些象形文字而不是我的价值。我不得不承认我并没有完全看透指针算术......
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);
}
【问题讨论】:
-
我绝不是 C 专家,但这对我来说似乎是正确的。如果您将
s->signalchar.name替换为简单的"Hello",它是否可以正常工作? -
幽默一下,试试
printf("%s", s->signalchar.name);。代码对我来说看起来不错;除了name应该是const char*如果你给它分配文字。 -
您确定
lcdPrintf工作正常吗?你试过lcdPrintf(0,11,9,"%s", "Sinus");吗?在结构中添加分号。 -
lcdPrintf() 工作正常。我可以轻松打印“鼻窦”。分号也不是问题:/
-
你有没有考虑在顶部添加函数原型?
void printParameters(struct Signal *s);在结构定义之后或者在main之前定义函数printParameters。