Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指向C中结构表的指针_C_Arrays_Pointers_Struct - Fatal编程技术网

指向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

我不懂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
的指针。它包含
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语言方面没有很强的背景,但我现在不得不在学习中使用一些已经编写好的代码。但是你让我的问题变得很简单,现在我明白了!