鱼C论坛

 找回密码
 立即注册
查看: 2332|回复: 3

[已解决]求助

[复制链接]
发表于 2022-12-18 21:28:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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[5] = { 1,3,5,6 };
        fun(a, 5);
        for (int i = 0; i <= 4; i++)
                printf("%d", a[i]);
}


为什么经过fun函数后,数组a元素的值保持不变呢,地址不应该改变了吗
最佳答案
2022-12-19 11:43:55
fun函数里p = p1表示p指向p1的地址,没有改变p1里面数据的值。
最后main函数里面打印a数组和你定义的时候地址是一样的,并且fun并不改变a中数据,所以什么都没变。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-19 09:34:39 | 显示全部楼层
fun 中没有对 p, p1, p2 进行解引用,既然没有解引用,那么就不会修改 a 的值

还有啊,一个变量声明下来后,地址几乎是不可能改变了,更别说函数修改了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-12-19 11:43:55 | 显示全部楼层    本楼为最佳答案   
fun函数里p = p1表示p指向p1的地址,没有改变p1里面数据的值。
最后main函数里面打印a数组和你定义的时候地址是一样的,并且fun并不改变a中数据,所以什么都没变。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-19 20:04:05 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-17 15:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表