gpt4 book ai didi

C 矩阵和指针错误

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

此版本的此功能效果很好:

int** outerProduct(int v[], int n){
int i, j;
int **a = malloc(n*sizeof(int*));
for(i=0; i<n; i++){
a[i] = malloc(n*sizeof(int));
}

for(i=0; i<n; i++){
for(j=0; j<n; j++){
*(*(a+i)+j) = v[i]*v[j];
}
}

return a;
}

这不起作用:

int** outerProduct(int v[], int n){
int i, j;
int **a = malloc(n*sizeof(int*));
for(i=0; i<n; i++){
a[i] = malloc(n*sizeof(int));
}

for(i=0; i<n; i++){
for(j=0; j<n; j++){
*(a+(i*n)+j) = v[i]*v[j];
}
}

return a;
}

错误是*(a+(i*n)+j) = v[i]*v[j];但我不明白为什么。应该是一样的。

最佳答案

与二维数组不同,不能保证行将位于连续的内存中。

如果您为整个 n * n 数组进行单个内存分配,那么您可以按照使用指向 1- 的指针数组时失败的方式对其进行索引D 数组。

关于C 矩阵和指针错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41024221/

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