c语言中对*a &a a的认识

*a和&a的区别,*a表示取一个地址里面的一个数,然而&a表示这个地址,地址里面也有数,所以说表示的是一个整体,a表示这个数字的本身,包括地址还有数。

int* a=&a,表示的取这个地址的数

void Swap(int *x,int *y)
{

int z = x;
x = y;
y = z;
}

     这里交换是位置和值全部交换了,但是指针存储的值没有变,但是原来的这个数的地址还有值都没有改变。

### C语言中函数参数使用`&amp;`符号的用法 在C语言中,`&amp;`运算符用于获取变量的内存地址。当将其作为函数参数的一部分时,通常是为了实现通过指针传递数据的目的。这种方式允许函数修改调用者中的实际数据,而不是仅操作副本。 #### 地址传递的意义 如果希望函数能够改变实参的内容,则可以采用传地址的方式。这样做的好处在于效率更高,尤其是对于较大的结构体或者数组来说[^1]。 #### 使用实例说明 下面给出一个简单的例子来展示如何利用引用符号(`&amp;`)让函数接收并更改原始变量值: ```c #include <stdio.h> // 定义交换两个整数值得函数 void swap(int *a, int *b){ int temp; temp = *a; // 将*a 的值赋给临时变量temp *a = *b; // 把*b 值赋予到*a 所指向的位置上 *b = temp; // 再把原*a 值(存储于temp 中)赋予到*b 所指向位置上去完成互换过程。 } int main(){ int x=5,y=7; printf("Before swapping:\nx=%d\ny=%d\n",x,y); /* 调用swap()函数 */ swap(&amp;x,&amp;y); // 这里就是应用了' &amp;' 符号得到两者的具体物理储存位子 printf("\nAfter swapping:\nx=%d\ny=%d\n",x,y); return 0; } ``` 上述程序展示了如何定义以及调用带有指针型形参的 `swap()` 函数以达到真正意义上的数值交换效果。注意这里向该方法内部传输的是各自变量的实际定位信息而非单纯的数据拷贝版本[^2]。 #### 关键概念解析 - **取地址操作**:表达式形式为`&amp;variable_name`,它返回指定对象所在计算机随机存取记忆体内确切起始点编号即其唯一标识码—地址值。 - **间接访问机制**:借助解引用(*)操作可以从某个特定地方读写资料内容。例如,在上面的例子当中我们看到过这样的语句:`*a=*b`;这意味着我们将原本属于后者所代表区域内的东西复制到了前者关联之处去了[^3]。 #### 总结 综上所述,当我们想要使被调用方有能力直接影响外部环境下的某些实体状态变化情况之下就可以考虑运用这种技术手段——也就是所谓的按引用方式进行通讯交流模式;与此同时也要清楚认识到伴随而来的潜在风险因素比如野指针等问题都需要引起足够的重视加以防范处理才行!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值