指针做形参做局部变量以及内存分配 指针做形参是编程语言中的一种重要概念,它对程序的执行和结果产生重要影响。在C语言中,指针做形参可以分为一级指针和二级指针两种形式。一级指针做形参是指形参是一个指针变量,传递给函数的是指针的值,即地址。例如,void GetMemory1(char *p)就是一个一级指针做形参的示例。在这个函数中,p是一个指针变量,它的值是传递给函数的实参的地址。 在函数内部,可以对指针变量p进行操作,例如分配内存空间,p = (char *)malloc(100); 但是,这种操作不会改变传递给函数的实参的值,因为传递给函数的是指针的值,即地址,而不是指针本身。因此,在主函数中,str1仍然为NULL,执行GetMemory1(str1)后,str1仍然没有变化。 二级指针做形参是指形参是一个指针的指针,传递给函数的是指针的指针的值,即地址的地址。例如,void GetMemory3(char p,int num)就是一个二级指针做形参的示例。在这个函数中,p是一个指针的指针变量,它的值是传递给函数的实参的地址的地址。在函数内部,可以对指针变量p进行操作,例如分配内存空间,*p = (char *)malloc(num); 这种操作可以改变传递给函数的实参的值。 指针做局部变量是指在函数内部定义的指针变量,它的生命周期是函数的执行周期。在函数执行完毕后,指针变量的内存空间将被释放。如果在函数内部申请了空间(用new等),却没有delete,那么这个空间在程序运行结束之前不会释放,只要你知道这个空间的地址,就可以访问。 在内存分配方面,需要注意的是,每次分配空间后要判断是否分配成功,而在主函数中使用之后记得释放内存,并置空。例如,在GetMemory3函数中,需要判断*p是否为空,如果为空,则输出“error memory”。在main函数中,需要释放str3的内存,避免内存泄露。 指针做形参和指针做局部变量是两个不同的概念,它们之间的区别在于传递给函数的值和生命周期。在编程中,需要正确地理解和使用指针,避免内存泄露和乱码的出现。
- 粉丝: 6
- 资源: 960
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助