您好,欢迎来到刀刀网。
搜索
您的当前位置:首页传智播客 C/C++学习笔记 多级指针

传智播客 C/C++学习笔记 多级指针

来源:刀刀网
#define  _CRT_SECURE_NO_WARNINGS 
#include <stdio.h>
#include <string.h>
#include <stdlib.h>


int get_mem(char ***array_p, int num)
{
	char **array = NULL;
	int i = 0;

	array = (char**)malloc(sizeof(char*)* num);//在堆上开辟num个 char*指针
	if (array == NULL) //判断指针变量是否为空
	{
		fprintf(stderr, "malloc char **array error\n");
		return -1;
	}
	memset(array, 0, sizeof(char*)*num);

	for (i = 0; i < num; i++) {
		array[i] = (char*)malloc();
		if (array[i] == NULL) {
			fprintf(stderr, "maloc array[%d] error\n", i);
			return -1;
		}
		memset(array[i], 0, );

		//赋值
		sprintf(array[i], "%d%d%d%d", 9 - i, 9 - i, 9 - i, 9 - i);
	}

	///间接赋值是指针存在的最大意义 
	///*是一把钥匙找到一个内存空间赋值即修改其内存空间的值
	*array_p = array;

	return 0;
}

void free_mem(char ***array_p, int num)
{
	int i = 0;

	if (array_p == NULL) {
		return;
	}
	char **array = *array_p;


	for (i = 0; i < num; i++) {
		if (array[i] != NULL) {
			free(array[i]);
			array[i] = NULL;
		}
	}

	free(array);

	*array_p = NULL;
}

int main(void)
{
	char **my_array = NULL;
	int num = 4;

	get_mem(&my_array, num);
	printf("-----\n");
	free_mem(&my_array, num);

	if (my_array == NULL) {
		printf("kong\n");
	}



	return 0;
}

 

 

 

 

 

 

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.com 版权所有 湘ICP备2022005869号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务