gpt4 book ai didi

c - 在c中初始化双指针的正确方法是什么

转载 作者:行者123 更新时间:2023-12-01 23:08:12 24 4
gpt4 key购买 nike

如题,我想知道如何用sizeof指针初始化双指针。

例如

int **p=malloc(sizeof *p * rows);

for(size_t i = 0; i < rows; i++){
p[i]=malloc(sizeof ? * cols);
}

我应该在中填写什么?

如有任何帮助,我们将不胜感激。

最佳答案

What should I fill in ?.

一般情况下

X = malloc(sizeof ? * NUMBER);

? 将替换为 X 指向的类型。可以简单地写成*X

所以行:

p[i]=malloc(sizeof ? * cols);

是:

p[i]=malloc(sizeof *p[i] * cols);

请注意,二维数组的创建要简单得多。你只需要

int (*p)[cols] = malloc(sizeof *p * rows);

这里的p是一个指向colsint数组的指针。因此 sizeof *p 将是 cols int 数组的大小。

使用这种基于 VLA 的技术意味着您可以使用单个 malloc 分配二维数组。除了使代码更简单(即只有 1 个 malloc)之外,它还确保整个 2D 数组在连续内存中,这可以为您提供更好的缓存性能。

关于c - 在c中初始化双指针的正确方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70416548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com