#include<stdio.h>
#include<stdlib.h>
struct test
{
int data;
struct test *next;
};
void main()
{
struct test *head=(struct test *)malloc(sizeof(struct test));
struct test **ref=&head;
head->data=5;
head->next=NULL;
printf("\n %d \n %d",head->data,head->next);
printf("\n %d \n %d",**ref->data,**ref->next);
}
Объяснение:Ĉ указатели двойные указатели
Я попытался выше фрагмент кода.
Не **ref
такой же, как *head
? Если не так?
Кроме того, компилятор бросает ошибку на втором printf
говоря, что data
и next
не являются частью structure
или union
.
Добро пожаловать в переполнение стека! [Пожалуйста, ознакомьтесь с этим обсуждением, почему бы не использовать возвращаемое значение 'malloc()' и family в 'C'.] (Http://stackoverflow.com/q/605845/2173917). –
без какого-либо аспекта программирования, в случае '** ref так же, как * head', то почему вы считаете, что дополнительный' * 'есть вообще? –
Другими словами, у вас есть слишком много '*' в вашей версии 'printf (" \ n% d \ n% p ", (* ref) -> data, (* ref) -> next);' и вам необходимо окружить указатель в скобках, чтобы применить правильное приоритет оператора. –