gpt4 book ai didi

c - 为什么我在 C 中分配矩阵时得到十六进制值?

转载 作者:太空宇宙 更新时间:2023-11-04 00:37:59 25 4
gpt4 key购买 nike

我想使用 malloc 在 C 中分配一个矩阵。编译成功结束,但在执行程序时得到一个奇怪的值。请在这里举个例子:

#include<stdio.h>
#include<malloc.h>

int main(int argc, char **argv){
int rows=160, cols=160;
int *mat = (int *)malloc(rows * cols * sizeof(int));
int i, j;

for(i=0;i<160;i++) for(j=0;j<160;j++) mat[i * cols + j]=i+j;

for(i=0;i<160;i++) for(j=0;j<160;j++)
printf("R[%d][%d] = %p\n", i, j, (void*)mat[i * cols + j]);
}

例如,我在执行后得到:

R[158][159] = 0x13d

最佳答案

您正在访问矩阵的第 160 行和第 160 列,但您的索引范围为 0 到 159。

尝试访问您的矩阵之前,请尝试重置您的 ij 变量。

编辑:

如果你想查看分配的值,你可能想这样做:

printf("R[%d][%d] = %d\n", i, j, mat[i * cols + j]);

此外,您应该将 malloc.h 包含更改为 stdlib.h,最新的是标准的。

关于c - 为什么我在 C 中分配矩阵时得到十六进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22377925/

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