int *p=(int*)malloc(sizeof(int));执行此句后为什么可以定义p[5]
时间: 2023-11-20 13:07:35 浏览: 52
执行int *p=(int*)malloc(sizeof(int));后,p指向了新分配的内存块的首地址。由于malloc函数分配的内存块是一块连续的内存空间,所以只需要通过p指针向后偏移5个int类型的大小,就可以访问分配的内存块中的第5个int元素,即p[5]。但需要注意的是,由于内存分配函数malloc返回的是一个void类型的指针,所以需要进行强制类型转换为int类型指针,才能进行指针偏移和访问内存块中的数据。
相关问题
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 *p=(int*)malloc(sizeof(int)*len);
int *p=(int*)malloc(sizeof(int)*); 这段代码的作用是动态分配一个长度为 len 的 int 类型数组,并将其指针赋值给 p。这里使用了 malloc 函数来实现动态内存分配,sizeof(int)*len 表示需要分配的内存大小,int* 表示将返回的地址强制类型转换为 int 指针类型。最后,将指针赋值给 p 可以通过 p 来访问和操作这个动态分配的数组。
阅读全文