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;
}
相關文章
相關標籤/搜索