在函数中有如下定义:int *a;a= &b[0]; 在函数中改变a的值b会变嘛
时间: 2024-03-29 08:34:30 浏览: 23
会。这里的代码和第一个问题的代码是一样的,定义一个int类型的指针变量a,然后将a指向了b数组的第一个元素的地址。修改a指向的数组元素的值,也就是修改a指向的内存空间的值,会影响到b数组对应位置上的元素的值,因为a和b都指向同一个内存地址。例如,执行*a = 5;,那么b[0]的值也会变成5。但是如果改变a本身的值,也就是将a指向另一个内存地址,不会影响到b的值。
相关问题
在函数中有如下定义:int*a= &b[0]; 改变a的值b会变嘛
不会。这里的定义和上一个问题中的定义非常相似,唯一的区别是这里指针变量a是一个int类型的指针变量,它指向了b数组的第一个元素的地址。修改a指向的内存空间的值,也就是修改a指向的数组元素的值,不会影响到b数组对应位置上的元素的值。因为a和b指向的内存地址虽然相同,但是它们的类型不同,所以它们所指向的内存空间的大小和数据类型也不同。如果要通过a来修改b数组的元素,需要通过指针间接引用的方式来修改。例如,执行*a = 5; 将把b[0]的值改为5。
用c语言交换两个整数的值,函数接口定义:void fun (int *a,int *b);
下面是交换两个整数的值的 C 语言代码:
```c
void fun(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
```
调用这个函数时,传入两个整数的地址即可:
```c
int main() {
int a = 1, b = 2;
printf("Before swap: a = %d, b = %d\n", a, b);
fun(&a, &b);
printf("After swap: a = %d, b = %d\n", a, b);
return 0;
}
```
输出:
```
Before swap: a = 1, b = 2
After swap: a = 2, b = 1
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)