指针和引用(C++)

Pointers and references (C++)

本文关键字:C++ 引用 指针      更新时间:2023-10-16

这个while没有停止,似乎陷入了一个无休止的循环:

struct list_elem<int[5]> *p, *pCopy; // list_elem is  the node struct
p = l.pfirst;                        // l is the LL object
pCopy = p->next;
while(p != NULL) { 
   //bunch of code
   p = pCopy; 
}

将结束问题

简单地说,pCopy是一个常数,因为它在循环之外。感谢您对的帮助

这就是迭代的方式:

while(p != NULL) { 
   p = p->next; 
}

.运算符用于局部结构,而->取消引用指针:

#include <stdio.h>
#include <string.h>
struct my_struct {
    int id;
    struct my_struct *next;    
}
int main()
{
    struct my_struct *a, *b, *c;
    a = malloc(sizeof(struct my_struct));
    b = malloc(sizeof(struct my_struct));
    c = malloc(sizeof(struct my_struct));
    a->next = b;
    a->id = 1;
    b->next = c;
    b->id = 2;
    c->next = NULL;
    c->id = 3;
    struct my_struct *it = a;
    printf("Using pointers:nn");
    while(it != NULL) {
        printf("Element %dn", it->id);
        it = it->next;
    }
    struct my_struct d, e, f;
    d.next = &e;
    d.id = 1;
    e.next = &f;
    e.id = 2;
    f.next = NULL;
    f.id = 3;
    it = &d;
    printf("Using locals:nn");
    while(it != NULL) {
        printf("Element %dn", it->id);
        it = (it->next);
    }
    free(a);
    free(b);
    free(c);
    return 0;
}

您应该在谷歌上搜索一个关于C的教程,并在第一行尝试理解指针算术

while ((p = p->next) != NULL);

您所拥有的并不是真正浏览列表,只是一遍又一遍地将其自身设置为相同的