int**p;**p=(int**)malloc(n*sizeof(int*))正确吗?
时间: 2023-10-17 08:06:52 浏览: 89
不, int**p;**p=(int**)malloc(n*sizeof(int*)) 不是正确的。这段代码有两个问题。首先,int** p;声明了一个指向指针的指针变量p。接下来,**p=(int**)malloc(n*sizeof(int*))试图将分配的内存地址赋值给二级指针p,这是不正确的,因为**p是一个值,而不是一个指针。正确的写法应该是 *p = (int*)malloc(n*sizeof(int)),这样可以将分配的内存地址赋值给一级指针p。
相关问题
int **matrix = (int **)malloc(n * sizeof(int *));
这个C语言代码片段是用于动态分配一个多维数组(矩阵)的内存。这里,`int **matrix` 是一个指向指针的指针,表示一个可以存储整型数组地址的数组。`malloc` 函数被用来分配 n 个 `int *` 的大小,也就是 n 乘以每个 `int *` 占用的字节数(通常 sizeof(int *)),因为每个元素是一个指向整数的指针。
1. `n * sizeof(int *)`:这是计算总内存需求的关键部分,`n` 是矩阵的行数,`sizeof(int *)` 表示单个指针所占的字节数。
2. `(int **)`:这里的双星号表示这是一个二维指针,可以存储一个数组的地址,而不是直接的整数值。
int* res = malloc(sizeof(int) * 501)是否等于res=(int*)malloc(sizeof(int*)*501)
不完全相等。
第一个表达式 `int* res = malloc(sizeof(int) * 501)` 意思是,为 `res` 分配了一个大小为 501 个整型数字的内存空间,并将其首地址赋值给了 `res`。
第二个表达式 `res=(int*)malloc(sizeof(int*)*501)` 意思是,为 `res` 分配了一个大小为 501 个指向整型数字的指针的内存空间,并将其首地址赋值给了 `res`。
因此,这两个表达式虽然都使用了 `malloc` 函数进行内存分配,但分配的内存空间的类型不同,因此不完全相等。正确的表达式应该是 `res=(int*)malloc(sizeof(int)*501)`。
阅读全文