指向C中结构表的指针
我不懂C中的一些代码,也找不到任何类似的问题,希望您能帮助我。 我有一个指向C中结构表的指针,c,arrays,pointers,struct,C,Arrays,Pointers,Struct,我不懂C中的一些代码,也找不到任何类似的问题,希望您能帮助我。 我有一个struct表,定义如下: struct my_struct { struct other_struct some_struct[N]; char some_char; .. } my_struct[N]; 在另一个功能中: struct my_struct *ms; 然后是我不明白的部分: ms = &my_struct[0]; 如何解释这一行?ms是指向结构my_struct的指针。它包含str
struct
表,定义如下:
struct my_struct {
struct other_struct some_struct[N];
char some_char;
..
} my_struct[N];
在另一个功能中:
struct my_struct *ms;
然后是我不明白的部分:
ms = &my_struct[0];
如何解释这一行?
ms
是指向结构my_struct
的指针。它包含struct my_struct
变量的地址。在这里,我们将已声明的struct my_struct
数组(也称为my_struct
)的第0个元素地址分配给ms
&
-操作员地址。它基本上返回变量的地址
现在您可以通过ms
访问my_struct[0]
等价地
ms->some\u char='A'
与my\u struct[0]相同。some\u char='A'
。举个小例子,我可以用这种方式简化
struct a{
int z;
};
struct a array[10]; // array of 10 `struct a`
struct a* ptr = &array[0]; // ptr contains the address of array[0].
现在我们可以通过指针ptr
访问array[0]
而
ms
只是指向struct的指针
而不是您在问题标题中提到的指向struct表的指针。这实际上与ms=my_struct代码>。也许您应该阅读更多关于操作员地址的信息(如果您想知道的话)?如果你想知道的不是&
运算符,那么也许你可以编辑你的问题来详细说明你的问题?你使用的my_struct
有两种不同的含义,这无助于理解代码。@Yunnosh问题是这段代码是由其他人编写的……是的,我想我应该多读一些关于&运算符的内容,因为我现在必须在学习中理解并使用一些C代码,但实际上我没有这方面的坚实基础:/1+(不仅仅是)最后一句,这可能是最重要的。谢谢你的回答!正如我在上面的一些评论中提到的,我在C语言方面没有很强的背景,但我现在不得不在学习中使用一些已经编写好的代码。但是你让我的问题变得很简单,现在我明白了!