2011-02-10 55 views
1

下面的程序再次聲明一個指針,然後再保存一個新指針,以保存先前指針變量的地址..我可以使用多少嵌套指針變量來保存內存地址 是否有任何限制?c [嵌套指針變量]中的指針?

#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(); 
} 

回答

1

沒有限制。指針是一塊內存(通常是一個字),其內容是一個地址。一個指向指針的指針也是一個單詞,其內容是一個地址,但恰巧的地址是地址是另一個地址。關於指向指針的指針(指向指針的指針等,廣告nauseum)沒有什麼特別的特殊之處。

0

據我所知,除了系統內存限制(理論上),不應該有任何限制。這將取決於使用的編譯器。

0

語言本身沒有限制。指針變量的用途是存儲地址。可以存儲指向指向地址的地址的指針,指向地址的指針。

但是,您使用這些類型的嵌套指針的次數越多,代碼越難理解。

0

不,沒有限制,因爲它們都只是指向某個東西,而它們指向的東西恰好是另一個指針。 你想要做一些實際的事情嗎? 託德。

0

我能找到的建議限制的唯一語言是:

5.2.4.1翻譯限制

1執行應能夠翻譯和執行 至少包含一個程序12指針,數組和函數聲明(以任意組合)修飾 一個 - 13)
...
:下列限制每一個的至少一個實例rithmetic,結構,聯合或不完整的類型中聲明
...
- 以邏輯源極線
4095個字符...
0

沒有限制。你甚至可以製作一個指向它自己的指針,它是無限遞歸的:

void *p = &p;