C 指向数据类型和数据成员的指针之间的差异

C 指向数据类型和数据成员的指针之间的差异,c,pointers,C,Pointers,我正在学习C语言,我很难理解作为指针的两个语句之间的区别 double **X; 及 都一样吗 还有一个问题。 我们什么时候才能真正得到一个使用指针指向上述指针的位置,这两个例子都是相同的。它将一种类型的X定义为指向double的指针 数组是通过指向其第一个元素的指针访问的连续内存片段。如果您有一个数组数组,那么它的类型是“无论元素类型是什么”*** 例如,字符串是字符数组,以“\0”字节结尾。所以字符串数组的类型是char** 示例用法非常常见,main()function,可以声明如下 i

我正在学习C语言,我很难理解作为指针的两个语句之间的区别

double **X;

都一样吗

还有一个问题。


我们什么时候才能真正得到一个使用指针指向上述指针的位置,这两个例子都是相同的。它将一种类型的
X
定义为指向double的指针

数组是通过指向其第一个元素的指针访问的连续内存片段。如果您有一个数组数组,那么它的类型是
“无论元素类型是什么”***

例如,字符串是字符数组,以“\0”字节结尾。所以字符串数组的类型是
char**

示例用法非常常见,
main()
function,可以声明如下

int main(int argc, char** argv)

因此,
argv
是作为参数或程序的字符串数组,
argc
是它的长度。

这两个变量声明的含义相同。
*
是解引用运算符,因此它读取(X指向的值)指向的值是双精度的在我看来可能会让人困惑,而且很难看。除此之外,为什么它们会有所不同?而
double**X
也将是相同的或
double**X
。空白实际上与此不太相关,它们有助于增加代码的清晰度,我鼓励您尽可能多地使用它们,以使代码清晰,为人眼区分标记,但在其他方面是无用的。@zenith我认为这不是一个很好的复制品。我在谷歌上找到了这个。谢谢艾奥比和伊哈罗布的解释。现在很清楚,我是否删除了这个问题,因为它是重复的…?字符串是字符数组,以“0”字节结尾???是的,我的意思是值为0的字节。为了确定字符串的长度,处理该字符串的函数要求它在出现空字节时立即结束@Ashiquzzaman:更准确地说,字符串是以零值字节结尾的字符序列。字符串存储为
char
的数组。是的,零值字节,谢谢。
char**
不是数组。它是指向指针的指针。类似(但不完全相同)的语义使它们像数组一样可用。
int main(int argc, char** argv)