gpt4 book ai didi

不指定变量类型的 malloc 的正确语法

转载 作者:行者123 更新时间:2023-11-30 15:00:40 25 4
gpt4 key购买 nike

我在网上看到了以下使用 malloc 的语法:

double ***x;
x = malloc(N * sizeof(*x));
for (i = 0; i < size_y; i++) {
x[i] = malloc(N * sizeof(**x));

即指向的变量的类型没有指定到malloc中:通常,我们这样声明指针:

double ***x;
x = malloc(N * sizeof(double*));
for (i = 0; i < size_y; i++) {
x[i] = malloc(N * sizeof(double**));

据我了解,第一种方法允许快速更改指向的类型,只需将“double ***x”替换为“int ***x” >”例如。

在第二种方法中,我们必须将所有“double”替换为“int”为sizeof

第一种方法有效吗?如果有效,是否推荐?

最佳答案

有效吗? 是(原则上)。 sizeof 运算符可以应用于类型(如第二个示例中所示),或者同样可以应用于任何表达式(返回该表达式返回的类型的大小)。所以它是有效的。我说“原则上”是因为您将错误的表达式传递给了错误的 malloc 调用。

推荐吗?嗯,我会推荐它,原因你已经说过了。

关于不指定变量类型的 malloc 的正确语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41962482/

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