c++int *p =(int*)malloc(5)
时间: 2023-09-04 11:15:20 浏览: 38
这段 C 代码中存在一个错误。malloc 函数的参数应该是要分配的字节数,而不是要分配的元素个数。因此,正确的写法应该是:
```c
int *p = (int*)malloc(5 * sizeof(int));
```
这里的 `sizeof(int)` 表示一个 `int` 类型的变量占用的字节数,通常是 4 个字节(32 位系统)或 8 个字节(64 位系统)。所以,上面的代码分配了 5 个 `int` 类型的变量所需的总字节数,并将其赋值给指针变量 `p`。
相关问题
c++int *p =(int)malloc(5);
这段代码存在问题,应该将 `(int)` 改为 `(int*)`,即:
```
int *p = (int*)malloc(5);
```
这是因为 `malloc()` 函数返回的是 `void*` 类型的指针,需要将其强制转换为需要的指针类型。在这里,我们需要一个 `int*` 类型的指针,因此需要将 `void*` 指针强制转换为 `int*` 指针类型。
int * ip = (int*)malloc(0)
您好,我可以回答您的问题。这是一个指向 int 类型的指针变量 ip,通过 malloc 函数申请了 0 个字节的内存空间。这样的操作没有意义,因为 malloc 函数会根据申请的空间大小从堆内存中分配出一块连续的内存空间,而申请 0 个字节的内存空间时并不会分配任何空间。因此,这里的 ip 指针变量虽然被成功创建,但并没有指向任何可操作的内存空间。此外,需要注意的是,malloc 函数是 C / C++语言中用于申请动态内存的函数。