C - 传递对 malloc 函数指针的引用?
C - pass reference to pointer to function for malloc?
我正在尝试将指针引用 (double) 传递给函数,并且在函数内部我想为该指针分配内存并用 10s 填充它。在 Visual Studio 中,在 x64 和 x86 中,它不会用 10s 而是用 0s 填充内存。
我不太明白我在这里做错了什么。
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
void GetData(double** d) {
*d = malloc(sizeof(double) * 100);
if (*d == NULL)
return;
memset(*d, 10, 100 * sizeof(double));
}
int main(void) {
double* data;
GetData(&data);
for (int i = 0; i < 100; i++) {
printf("%f\n", data[i]);
}
return 0;
}
更改此行:
memset(*d, 10, 100 * sizeof(double));
至:
for (int i = 0; i < 100; ++i)
(*d)[i] = 10.0;
memset
逐字节填充。因此,不是该数组的每个元素都变成 10.0,而是该数组的每个元素的每个字节都变成 10。所以 memset
不能使用双精度值。
我建议尽量减少副作用的使用(例如修改指针参数引用对象)并尽可能使用 return 值。
memset
设置 字节 。将 double 数中的所有字节设置为 10 不会将 double 值设置为 10.0
.
double *GetData(size_t num) {
double *d = malloc(sizeof(*d) * num);
if (d)
for(size_t index = 0; index < num; index++)
d[index] = 10.0;
return d;
}
int main(void) {
double* data = GetData(100);
for (int i = 0; d && i < 100; i++) {
printf("%f\n", data[i]);
}
return 0;
}
我正在尝试将指针引用 (double) 传递给函数,并且在函数内部我想为该指针分配内存并用 10s 填充它。在 Visual Studio 中,在 x64 和 x86 中,它不会用 10s 而是用 0s 填充内存。 我不太明白我在这里做错了什么。
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
void GetData(double** d) {
*d = malloc(sizeof(double) * 100);
if (*d == NULL)
return;
memset(*d, 10, 100 * sizeof(double));
}
int main(void) {
double* data;
GetData(&data);
for (int i = 0; i < 100; i++) {
printf("%f\n", data[i]);
}
return 0;
}
更改此行:
memset(*d, 10, 100 * sizeof(double));
至:
for (int i = 0; i < 100; ++i)
(*d)[i] = 10.0;
memset
逐字节填充。因此,不是该数组的每个元素都变成 10.0,而是该数组的每个元素的每个字节都变成 10。所以 memset
不能使用双精度值。
我建议尽量减少副作用的使用(例如修改指针参数引用对象)并尽可能使用 return 值。
memset
设置 字节 。将 double 数中的所有字节设置为 10 不会将 double 值设置为 10.0
.
double *GetData(size_t num) {
double *d = malloc(sizeof(*d) * num);
if (d)
for(size_t index = 0; index < num; index++)
d[index] = 10.0;
return d;
}
int main(void) {
double* data = GetData(100);
for (int i = 0; d && i < 100; i++) {
printf("%f\n", data[i]);
}
return 0;
}