问题 变量名前的两个星号


我又来了。在挖掘一些C源代码时,我发现了代码片段

char  **words

我知道变量名称之前的单个星号“指向”指针,但这两个星号的目的是什么?


7341
2017-09-29 10:05


起源

它是指向指针的指针 - vickirk
这有用吗?谁能给我一些简单的例子? - jingo
非常有用,就像指向不是指针的东西一样有用,例如一个int或一个函数。额外的间接级别总是有用的 - vickirk
“在实践中,什么是指向指针的指针?一个用途是从函数返回指针,通过指针参数而不是正式的返回值” c-faq.com/~scs/cclass/int/sx8.html  花点时间阅读整个页面;) - John Smith
假设你明白了什么 char* word 是,增加额外的 * 和 s 要得到 char** words 不应该太难以想象? - vickirk


答案:


它是指向指针的指针。

它主要用于使用字符串数组时。

例如:你有 char sample[5][5]; - 这可以存储5个长度为4的字符串;

如果你需要将它传递给一个函数, func(sample);

而这样一个函数的函数定义就是 func(char **temp);


9
2017-09-29 10:15





// your imagination is the limit
char letter;
char *word;        // sequence of letters
char **sentence;   // sequence of words
char ***paragraph; // sequence of sentences
char ****book;     // sequence of paragraphs
char *****library; // sequence of books

数据结构可能不是代表概念的最佳结果:这只是一个例子。


4
2017-09-29 10:28





简单的老兄! 它指向它的指针

**指向指针* a 而已。

有关详细信息,您可以谷歌


0
2017-09-29 10:18