C 指针数组

本文通过几个具体的示例介绍了如何使用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;
}

 

转载于:https://my.oschina.net/u/1579560/blog/1819247

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值