kasumi_official 发表于 2022-12-18 21:28:15

求助

#include <stdio.h>
void fun(int b[], int n)
{
        int* p1, * p2, * p;
        p1 = b; p2 = b + n - 1;
        for(int i=0;i<=4;i++)
        {
                p = p1; p1 = p1 + 1; p2 = p;
        }
}
int main()
{
        int a = { 1,3,5,6 };
        fun(a, 5);
        for (int i = 0; i <= 4; i++)
                printf("%d", a);
}


为什么经过fun函数后,数组a元素的值保持不变呢,地址不应该改变了吗

zhangjinxuan 发表于 2022-12-19 09:34:39

fun 中没有对 p, p1, p2 进行解引用,既然没有解引用,那么就不会修改 a 的值

还有啊,一个变量声明下来后,地址几乎是不可能改变了,更别说函数修改了

焦糖橙子 发表于 2022-12-19 11:43:55

fun函数里p = p1表示p指向p1的地址,没有改变p1里面数据的值。
最后main函数里面打印a数组和你定义的时候地址是一样的,并且fun并不改变a中数据,所以什么都没变。

yucheng6 发表于 2022-12-19 20:04:05

1
页: [1]
查看完整版本: 求助