使用 memset 初始化指针元素的二维数组
我有一个这些结构定义
typedef struct my_s {
int x;
int y;
} my_T;
typedef struct your_s {
my_T * x;
} your_T;
your_T array[MAX_COL][MAX_ROW];
要将数组的指针初始化为 NULL,我可以这样做吗:
memset (array, 0, sizeof(array))
这对我来说看起来不正确。
I have a these structures definitions
typedef struct my_s {
int x;
int y;
} my_T;
typedef struct your_s {
my_T * x;
} your_T;
your_T array[MAX_COL][MAX_ROW];
To initialize the array's pointer to NULL, can I do:
memset (array, 0, sizeof(array))
this does not look right to me.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
最简单的是
easiest is
您无法使用 memset 将 your_T 的指针初始化为 null,因为没有指定空指针的位模式全部由空位组成。 但是您可以像这样创建数组:
元素将被默认初始化,这意味着对于指针,该指针将包含空指针值。 如果您的数组是全局的,您甚至不必关心。 那么默认情况下就会发生这种情况。
You cannot initialize the pointers of your_T to null using memset, because it is not specified that a null pointer has its bit pattern all consisting of null bits. But you can create your array like this:
The elements will be default initialized, which means for a pointer that the pointer will contain a null pointer value. If your array is global, you don't even have to care. That will happen by default then.