int *p; p = (int*)malloc(malloc(2,sizeof(int));
时间: 2023-08-16 16:06:12 浏览: 48
您的代码有一些错误。首先,malloc函数的语法不正确,应该是malloc(sizeof(int) * 2)。其次,p的类型是int指针,应该是int *p。修正后的代码如下:
```c
int *p;
p = (int*)malloc(sizeof(int) * 2);
```
这样就分配了能够存储两个int类型数据的内存空间,并将指针p指向这块内存空间。请记得在使用完毕后调用free函数释放内存,以避免内存泄漏。
```c
free(p);
```
相关问题
int**p;**p=(int**)malloc(n*sizeof(int*))正确吗?
不, 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* 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)`。