指针不起作用

Pointer doesnt work

本文关键字:不起作用 指针      更新时间:2023-10-16

我的代码:

#include<iostream>
using namespace std;
struct element
{
    int liczba;
    element *nastepny;
    element();
};
element::element()
{
    nastepny=0;
}
int main()
{
    element pierwszy;
    pierwszy.liczba=1;
    element drugi;
    (*nastepny).pierwszy=2;
    drugi.liczba=2;
    return 0;
}

它说*nastepny没有被宣布,但我不知道这怎么可能。我用*nastepny创建了结构。如果我写元素 *nastepny,它说该元素没有名为 pierwszy 的成员。SOmething出了问题,因为pierwszy是在main函数的开头声明的。

(*nastepny).pierwszy=2;

这是没有意义的,因为nastepny不是静态声明的,也不是在其当前或任何父范围内声明的。 它是结构的成员,仅作为结构的一部分和实例存在。

此外,您不能简单地将两个分配给某个未分配指针的地址。 您有一个指针,但它尚未指向任何有效的位置。 因此,要么:

drugi.nastepny = malloc(sizeof *drugi.nastepny);
*drugi.nastepny = whatever;

要动态分配空间,或...

drugi.nastepny = &some_variable;

但要注意最后一个的终身问题。

错误发生在

(*nastepny).pierwszy=2;
  ^^^^^^^^

nastepny未在此范围内声明。结构的成员使其无法在结构(实例)外部访问。

我猜你的意思是这样的:

drugi.nastepny = &pierwszy;
drugi.nastepny->liczba = 2;

我建议这样做:

pierwszy.nastepny = &drugi;

我不确定当你尊重你的指针时,当你从来没有给它分配内存地址时,你期望如何获得一个对象?

如果要获取指向对象本身的指针,则可以使用 this 指针。但是,在这种情况下,这样的应用程序将毫无意义。

您提供给元素指针的唯一赋值是 0 (NULL),因此它不指向任何元素对象。