Указатель не объявляется в области видимости
Я делаю программу, чтобы понять, как работают динамические списки в 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;
,