2

下面的程序声明了一个指针,然后又声明了一个新指针来保存前一个指针变量的地址。我可以使用多少嵌套指针变量来保存内存地址有什么限制吗?

#include <stdio.h>
#include <conio.h>

void main()
{
    int x=2,y=5;

    int *ptr;
    int **sptr;
    int ***ssptr;

    ptr = &x; // address of x
    *ptr = 0; 
    sptr = &ptr;
    ssptr = & sptr;

printf(" address is ip = %u %u %u",ptr,sptr,ssptr);
    _getch();
}
4

6 回答 6

1

没有限制。指针是一块内存(通常是一个字),其内容是地址。指向指针的指针也是一个字,其内容是地址,但恰好该地址的内容是另一个地址。指向指针的指针(指向指向指针的指针......等等,ad nauseum)并没有什么特别之处。

于 2011-02-10T17:59:23.660 回答
1

没有限制。你甚至可以创建一个指向自身的指针,它是无限递归的:

void *p = &p;
于 2011-02-10T22:28:45.977 回答
0

据我所知,除了系统内存限制(理论上)之外,不应该有任何限制。这将取决于使用的编译器。

于 2011-02-10T17:57:48.523 回答
0

语言本身没有限制。指针变量的目的是存储地址。可以存储一个指向地址的指针,它指向一个地址,...,它指向一个地址。

但是,您使用这些类型的嵌套指针越多,您的代码就越难以理解。

于 2011-02-10T17:59:13.443 回答
0

不,没有限制,因为它们都只是指向某物的指针,而它们指向的东西恰好是另一个指针。你想做一些实际的事情吗?托德。

于 2011-02-10T18:01:12.073 回答
0

我能找到的唯一一种暗示限制的语言如下:

5.2.4.1 翻译限制

1 实现应能够翻译和执行至少一个程序,该程序至少包含以下每个限制的一个实例:13)
...
— 12 个指针、数组和函数声明符(在任何组合)修改声明中的算术、结构、联合或不完整类型
...
- 逻辑源代码行中的 4095 个字符
...
于 2011-02-10T20:04:16.770 回答