【发布时间】:2023-03-18 19:05:01
【问题描述】:
main() 中的代码有两种类型的声明。第一个有效,第二个无效。
第一个代码工作并打印输出如下:
设置占空比 0 设置频率 1 设置矿石 2 设置 Minuti 3
第二种情况只返回这个字符串,即它总是打印'Set Duty Cycle':
设置占空比 0 设置占空比 0
代码完成:
#include <stdio.h>
#include <stdlib.h>
const char text[][16] = {"Set Duty Cycle",
"Set Frequency",
"Set Ore",
"Set Minuti",
"Set Current"
};
//char lcd is an index. When you get the next node, it read 'lcd' and print the new string
typedef struct node
{
char lcd;
unsigned int value;
struct node *next;
struct node *prev;
} NODE;
void cursor(NODE **node)
{
printf(" %s %d",text[(*node)->lcd],(*node)->lcd);
(*node) = (*node)->next;
}
int main()
{
/* First case : it works as aspected
NODE **ptr;
NODE* head = &(NODE) {.lcd = 0, .next = NULL, .prev = NULL, .value = 0 };
NODE* setDutyC = &(NODE) {.lcd = 1, .next = NULL, .prev = NULL, .value = 0 };
NODE *setFreq = &(NODE) {.lcd = 2, .next = NULL, .prev = NULL, .value = 0 };
NODE *setOre = &(NODE) {.lcd = 3, .next = NULL, .prev = NULL, .value = 0 };
NODE *setMin = &(NODE) {.lcd = 4, .next = NULL, .prev = NULL, .value = 0 };
NODE *setCurr = &(NODE) {.lcd = 5, .next = NULL, .prev = NULL, .value = 0 };
setDutyC->next = setFreq;
setFreq->prev = NULL;
setFreq->next = setOre;
setFreq->prev = setDutyC;
setOre->next = setMin;
setOre->prev = setFreq;
setMin->next = setCurr;
setMin->prev = setOre;
head->next = setDutyC;
*/
//-------- second case : it prints only "Set Duty Cycle" string
NODE **ptr;
NODE *head;
NODE *setDutyC;
NODE *setFreq;
NODE *setOre;
NODE *setMin;
NODE *setCurr;
head = &(NODE) {.lcd = 0, .next = setDutyC,.prev = NULL, .value = 0 };
setDutyC = &(NODE) {.lcd = 1, .next = setFreq, .prev = NULL, .value = 0 };
setFreq = &(NODE) {.lcd = 2, .next = setOre, .prev = setDutyC,.value = 0 };
setOre = &(NODE) {.lcd = 3, .next = setMin, .prev = setFreq, .value = 0 };
setMin = &(NODE) {.lcd = 4, .next = setCurr, .prev = setOre, .value = 0 };
setCurr = &(NODE) {.lcd = 5, .next = NULL, .prev = setMin, .value = 0 };
//--------
ptr= &head;
cursor(ptr);
cursor(ptr);
cursor(ptr);
cursor(ptr);
}
就像“node->next”不起作用
【问题讨论】:
标签: c pointers struct linked-list declaration