如果C中的结构定义为
struct StringList{ char* value; struct StringList* next; };
我必须从头部打印每个元素的值的地址
所以我有:
void print (struct StringList* head){
struct StringList* sp = Head;
while ((sp->next)->next != NULL){
printf( "value: %d", &sp->value);
}
我发布的程序员交流太不确定哪个网站更合适
答案 0 :(得分:2)
您将在空元素或单元素列表上崩溃。您的循环条件应该更改,并且您正在打印指针,因此您需要使用正确的格式,并且您没有更新循环体中的sp
:
while (sp != NULL)
{
//printf("Value: %d\n", sp->value);
printf("Address: %p\n", (void *)&sp->value);
sp = sp->next;
}
答案 1 :(得分:2)
您不需要额外的sp
变量。你也没有在while循环中更新它。还
(sp->next)->next!=NULL
sp->next
为NULL,将崩溃。我正在通过重复使用head
变量来展示一种方法。
void print (struct StringList* head){
while (head != NULL){
printf( "value: %p", &(head->value));
head = head->next;
}
}