指针不起作用

时间:2014-02-12 03:41:50

标签: c++ pointers structure

我的代码:

#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创建了结构。如果我写了element * nastepny,它说该元素没有名为pierwszy的成员。因为在主要功能开始时声明了pierwszy,所以出现了问题。

4 个答案:

答案 0 :(得分:3)

(*nastepny).pierwszy=2;

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

此外,您不能简单地将两个分配给某个未分配指针的地址。你有一个指针,但它还没有指向任何有效的。所以,要么:

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

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

drugi.nastepny = &some_variable;

但请关注最后一个问题的终身问题。

答案 1 :(得分:2)

错误发生在

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

nastepny未在此范围内声明。结构的成员不能在struct(instances)之外访问它。

我猜你的意思是这样的:

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

答案 2 :(得分:1)

我提出这个:

pierwszy.nastepny = &drugi;

答案 3 :(得分:1)

我不确定当你从未指定内存地址时,如果你的指针需要一个对象,你是否期望得到一个对象?

如果要获取指向对象本身的指针,则可以使用this指针。然而,在这种情况下,这样的应用是没有意义的。

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