c语言实现动态数组

本文探讨如何在C语言中使用二级指针和realloc函数实现动态数组的push_back操作。作者强调函数参数不可直接修改,但可以通过指针间接修改外部变量。文章详细介绍了push函数的设计,包括功能、可能出现的问题及解决方案,并提供了完整的代码示例。
摘要由CSDN通过智能技术生成

前言

最近研究二级指针,发现了二级指针配合realloc函数其实可以用来实现动态数组

这篇博文我只实现动态数组的push_back操作,就是在数组的末端增加一个元素

修正一个思想

c语言的函数参数,是不能在函数内部被修改的!!!因为传进来的参数,是拷贝构造
我们平时说"传指针就可以在函数内修改参数",实际上是误导学生的说法,
因为这个时候,函数的参数是指针,而这时候你会发现,你函数返回以后,这个指针变量没有被修改,也就是说,函数的参数还是没有被修改!!!
一旦学生遇到一个"需要操作指针变量"的函数时会不知所措被水淹没,这种思想荼毒很深!!!

应该这么记忆(三点)

1.函数函数参数,是不能在函数内部被修改的
2.但是,在函数内部仍然使用可以用某个变量的指针,直接指向函数外部,修改这个外部变量的值
3.函数的参数,可以是你需要修改的那个变量的指针

套用上面的新思想,我来设计这个动态数组的push函数

我们所希望的push函数的使用方法(函数my_push_back3)

int main()
{
   
    char *line = (char *)malloc(6); 
    //strcpy(line, "CHINA");//注意"\0"的问题,CHINA有5个字符,但是c语言自带的strcpy会给最后一个字符加上\0,原本我malloc写的是5,但是发现如果写5,strcpy不会出错,但是realloc会报错!!!!不知道这是为什么
    line = (char *)realloc(line, 7);
    

    char *arr = (char *)malloc(4); 
	arr[0] = 'a';
    arr[1] = 'b';
    arr[2] = 'c';
    arr[3] = '\0';
    printf("%s\n",arr);
	int num = my_strlen(arr);
    printf("array length %d\n",num);

	my_push_back3(&arr, 'e')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值