C 指针数组

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void get(char **num,size_t len)
{
	if (num != NULL)
	{
		*num = (char*)malloc(len);
	}
}


void set(int** arr, int len)
{
	if (arr != NULL)
	{
		*arr  = (int*)malloc(len * sizeof(int));
		for (int i = 0; i < len; i++)
		{
			*(*arr + i) = i;
		}
	}	
}

/************************************************************************/
/* 给指针数组赋值 .  直接当成数组数据.                                                                   */
/************************************************************************/
void setter(int** arr, int len)
{

	for (int i = 0; i < len; i++)
	{
		*arr[i] = i;
	}
}



int main()
{

	char* a = NULL;

	//用一个指针代替一个指针数组.申请空间.
	int*  b = {NULL};
	// 若是这么申明了, 空间必定是被申请好了.
	int*  c[5] = { NULL };




	get(&a,100);
	memset(a, 0, 100);

	strncpy(a,"zhangchao",strlen("zhangchao"));

	printf("%s\r\n", a);
	free(a);

	set(&b, 100);
	
	for (int i = 0; i < 100;i++)
	{
		printf("%d\r\n", *(b + i));
	}

	free(b);
	 
		
	for (int i = 0; i < 5; i++)
	{
		*(c + i) = (int*)malloc(sizeof(int));
		**(c + i) = i;
	}

	for (int i = 0; i < 5; i++)
	{
		printf("%d\r\n",**(c+i));
		free(*(c + i));
	}
   

    setter(c, 5);
   	printf("直接处理数组的方式\r\n");
	for (int i=0;i<5;i++)
	{
		printf("%d \r\n", **(c + i));
	}


	return 0;
}
相关文章
相关标签/搜索