指针数组,它是数组,每个元素都是指针,如何在堆区开辟指针数组呢?希望下面的文章对你有所帮助!
代码:
#include
#include
#include
//堆区指针数组
char** allocate_memory(int n){
char** temp = (char**)malloc(sizeof(char*)* n);
if (temp == NULL){
return NULL;
}
//每一个指针元素指向堆区内存
for (int i = 0; i < n;i ++){
//将malloc空间的首地址赋给每一个指针数组中每一个元素
temp[i] = (char*)malloc(100);
sprintf(temp[i], "%2d hello world!", i + 1);
}
return temp;
}
//打印函数
void print_array(char* arr[],int len){
for (int i = 0; i < len;i ++){
printf("%s\n",arr[i]);
}
printf("打印完毕!\n");
}
//释放数组空间
void free_memory(char* arr[], int len){
if (NULL == arr){
return;
}
for (int i = 0; i < len;i ++){
free(arr[i]);
arr[i] = NULL;
}
free(arr);
arr = NULL;
}
int main(){
char** pArray = NULL;
int n = 10;
pArray = allocate_memory(n);
print_array(pArray,n);
free_memory(pArray,n);
pArray = NULL;
system("pause");
return EXIT_SUCCESS;
}