鱼C论坛

 找回密码
 立即注册
查看: 4169|回复: 12

关于c的函数

[复制链接]
发表于 2014-5-28 13:59:20 | 显示全部楼层
你还是没有理解指针。
首先要知道,你的r也是个变量。r和fu函数中的p,都是变量,他们是两个变量!
他们可以同时指向同一个地址,也可以指向不同地址,对p指向地址做修改,不会对r产生影响
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-28 14:44:25 | 显示全部楼层
因为r也是个变量,也在内存中占有地址。所以你可以声明一个二级指针,int **pr,指向r,此时通过pr就可以修改r的值了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-28 17:37:25 | 显示全部楼层

唉,我直接给你代码吧
  1. #include <stdio.h>

  2. void fu(int **p, int *q)
  3. {
  4.         *p +=  2;
  5.         *q = *q + 1;

  6. }

  7. int main()
  8. {
  9.         int m = 1, c = 7,n = 2, *r = &m;
  10.         fu(&r, &n);
  11.         printf("%d %d", *r, c);
  12.         return 0;
  13. }
复制代码
上面代码执行后,r的值加了8
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-5-28 17:39:21 | 显示全部楼层
Road_7 发表于 2014-5-28 16:56
我刚才试了一下你的方法,能否在fu函数中改掉r的地址呢,一下是我的代码(没改掉r)

你的  int **ptr =& p;
通过ptr,只能改变p的值,对r没有任何影响的
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-4-1 20:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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