码迷,mamicode.com
首页 > 其他好文 > 详细

C和指针 (pointers on C)——第十一章:动态内存分配(下)习题

时间:2014-07-23 22:40:17      阅读:409      评论:0      收藏:0      [点我收藏+]

标签:c   指针   动态分配   

1、编写calloc,内部用malloc。

void *calloc (size_t n, size_t size)
{
	char * memory;
	memory =(char*) malloc(n * size);
	while( memory != NULL)
	{
		char * ptr;
		ptr = memory;
		while ( --n >= 0)
		{
			*ptr++ = '\0';
		}
	}
	return memory;

}
2、编写一个函数,动态存储一列输入的整数。

#include <stdlib.h>

int * readints()
{
	int *array;
	int value;
	int length = 1;
	array = (int *) malloc(length * sizeof(int));
	if (array == NULL)
	{
		return NULL;
	}
	while ( scanf_s("%d", &value) == 1)
	{
		length++;
		array =(int *) realloc(array,  length * sizeof(int));
		if (array == NULL)
		{
			return NULL;
		}
		array[length-1] = value;
	}
}

3、编写一个函数,动态存储一列输入的char。


#include "stdlib.h"

char * readstring()
{
	char *array;
	char *ptr;
	int length = 1;
	array = (char *) malloc (sizeof(char));
	gets(ptr);
	if (ptr == NULL)
	{
		exit (EXIT_FAILURE);
	}
	while (*ptr != NULL )
	{
		length++;
		array  = (char *) realloc (array , length * sizeof(char));
		if (array == NULL)
			exit (EXIT_FAILURE);
		array[length - 1] = *ptr;
		ptr++;
	}
	//追加一个NUL
	array  = (char *) realloc (array , (length++) * sizeof(char));
	if (array == NULL)
		exit (EXIT_FAILURE);
	array[length - 1] = '\0';
	return array;
}



C和指针 (pointers on C)——第十一章:动态内存分配(下)习题

标签:c   指针   动态分配   

原文地址:http://blog.csdn.net/liyakun1990/article/details/38070689

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!