c语言 a和*a当参数,(转载)*a和*&a区别(c语言指针传值)

本文探讨C语言中指针传值时*a和*&a的区别。*a表示指针变量,用于取出指针所指向的内容;*&a表示传入指针本身,允许修改指针的值。通过示例代码和执行结果分析,指出transformTrue函数中使用*&a使动态分配的内存对全局变量有效,而transformCopy函数中*a仅在函数内部有效,导致数组b越界错误。
摘要由CSDN通过智能技术生成

https://blog.csdn.net/weixin_42889479/article/details/81437659

此篇为复习考研专业课(数据结构)笔记,记录一个值得研究的问题。小哥我是为千百计算机考研大军中的一人,专业课数据结构,今天为大家分享一个有关于c语言指针传值的问题,其中夹带了许多个人理解,欢迎批评指正。

大家都知道指针的使用是c语言编程的基础核心,今天我们就来探讨一下传入*a与*&a的区别。

简单的说一下这两个东西:

*a :在定义变量时表示的是一个指针类型的变量,而在代码中(执行部分)则表示取出该指针所指向内容的值。

*&a:通常用于函数的传值,表示传入指针本身,不作复制(后面讲这句话的意思)。

首先,我用一段代码引出要讨论的问题,请看如下代码和执行结果:

#include#includevoid transformTrue(int *&point);

void transformCopy(int *point);

int main(){

int *a,*b,i=0;

transformTrue(a);

transformCopy(b);

for(i=0;i<5;i++) {a[i]=i;}

printf("-------------------------------\n");

printf("形参为*&a---->\n");

for(i=0;i<5;i++){printf("%d ",a[i]);}

printf(&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值