Существует 3 версии файла заголовка.Что такое 'typedef in C'?
версия 1:
typedef struct node
{
void* dataPtr;
struct node* link;
} NODE;
версия 2: без старого имени типа 'узла' (ЬурейеГо oldTypeName newTypeName)
typedef struct
{
void* dataPtr;
struct* link;
} NODE;
версии 3: без ЬурейеГо
struct
{
void* dataPtr;
struct* link;
} NODE;
Согласно C : typedef struct name {...}; VS typedef struct{...} name;, Версия 1, определяющая «узел», является излишней, и я изменил его на версию 2, и он работал нормально.
В соответствии с этим ответом снова, когда не используется «typedef», нельзя использовать «NODE».
Однако коды, использующие этот файл заголовка версии 3, работали нормально. (УЗЕЛ использовал два три раза.)
Это код:
/* Create a list with two linked nodes.*/
#include <stdio.h>
#include <stdlib.h>
#include "version3.h" //Header file
int main (void)
{
//Local Definitions
int* newData;
int* nodeData;
NODE* node;
// Statements
newData = (int*)malloc (sizeof (int));
*newData = 7;
node = createNode(newData);
newData = (int*)malloc (sizeof (int));
*newData = 75;
node->link = createNode(newData);
nodeData = (int*)node->dataPtr;
printf ("Data from node 1: %d\n", *nodeData);
nodeData = (int*)node->link->dataPtr;
printf ("Data from node 2: %d\n", *nodeData);
return 0;
} //main
Что толк «ЬурейиЙ» в этой ситуации? (если предположить, что здесь я снова использовал NODE. -> если это предположение неверно, скажите, пожалуйста, почему. Я не знаком с языком С.)
typedef определяет новый тип, который вы можете использовать для нескольких экземпляров. Вы пытались найти другие ответы на этот вопрос здесь? – Dronz
Строка 'struct * link;' не компилируется. Ни версия 2, ни версия 3 не работают, потому что ни одна из них не компилируется. – user3386109