Указатель не объявляется в области видимости

Я делаю программу, чтобы понять, как работают динамические списки в C, это мой код:

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

typedef struct nodo{
    int dato;
    struct nodo *prox;
}node;

typedef node *ptrNode;

int dimLista(ptrNode testa);
void insTesta(int num,ptrNode *testa);

int main(int argc, char** argv) {
    int dim,num;
    // creo la lista
    ptrNode primoEl = NULL;
    // inserisco gli elementi
    insTesta(2,&primoEl);
    insTesta(5,&primoEl);
    insTesta(6,&primoEl);


    ptrNode Mtesta;
    dim = dimLista(Mtesta);

    printf("%d", dim);
    printf("\n\n%d",primoEl->dato);
    printf("\n\n%d",primoEl->prox->dato);

    system("pause");
    return 0;
}

void insTesta(int num, ptrNode *testa) {
    // creo puntatore al nuovo elemento e riservo lo spazio nella memoria          heap
    ptrNode NuovoEL;
    NuovoEl = (ptrNode)malloc(sizeof(node));
    // assegno al nuovo elemento tramite il puntatore il dato e 
    // assegno a prox il contenuto del primo elemento della lista (che é      null per il primo elemento inserito)
    NuovoEl->dato = num;
    NuovoEl->prox = *testa;
    // assegno all'indirizzo del primo elemento l'indirizzo del nuovo  elemento tramite la variabile
    *testa = NuovoEl;
}

int dimLista(ptrNode testa) {

    if (testa == NULL) {
        return 0;
    }

    else return 1 + dimLista(testa->prox);
}

Но я не понимаю, почему он продолжает давать мне ошибку внутри функции void insTesta, которая говорит:

NuovoEl не был объявлен в объеме

на линии malloc, Но я четко заявил об этом раньше.

1 ответ

Идентификаторы в C чувствительны к регистру. переименовывать ptrNode NuovoEL; в ptrNode NuovoEl; и это будет работать.

Помимо этого вы не инициализировали ptrNode Mtesta; в main, Измените это на ptrNode Mtesta = primoEl;,

Другие вопросы по тегам