问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言用指针传递参数的问题5

发布网友 发布时间:2023-10-11 03:48

我来回答

5个回答

热心网友 时间:2024-12-05 14:06

指针传递参数实例:

void fun1( int *p ) //此函数接受一个指针p,也就是说p是别人传过来的一个int类型的地址
{
    printf(" %d", p);  ///打印p的值,注意p是地址,所以打印的是一个内存地址
   printf("%d", *p); ///打印指针p所指向的内存单元的值,那要看p是谁传过来的,它以前值是多少?
 
   *p = 0;  ///把p所指向的内存单元赋值为0
}
 
  main()
{
    int a  = 90;  ///定义一个整形变量,存放90
 
   fun1( &a) ;  //调用fun1函数,并把变量a的地址传递过去
 //注意,a刚开始存放的是90,执行完后a内容就变成0了
 
}

希望能帮到你,望采纳哈!

热心网友 时间:2024-12-05 14:07

#include <studio.h>
main ()
{int m=1,n=2,*p=&m,*q=&n,*r;//p指向m,q指向n
r=p;p=q;q=r; //交换后p指向n,q指向m
printf("%d,%d,%d,%d\n",m,n,*p,*q);//m,n虽然没变;*p(即n)与*q(即m)却有了变化。

}
至于第二段代码只是通过主函数调用另一个全局函数来作,结果一样。
不过你第二段代码中#include<studio.h>却写错了。

补充一点:如果要用指针或引用来交换变量数值,代码却不是像上面的用法。
就本问题来说:因为虽然交换了指针但指针所指向的变量却丝毫没有变化。
指针保存了变量的地址,交换变量的值,必须用解引用后的指针才能办到:
如:
void swap1(int *x,int *y)
{
int *tmp=x;
x=y; //交换了指针x和y,x和y所指向的变量却没有交换
y=tmp;
}
void swap2(int *p,int *q)
{
int tmp=*p;
*p=*q; //通过指针解引用,交换了指针所指向的变量
*q=tmp;
}

进一步说:这就是深复制和浅复制的区别。

热心网友 时间:2024-12-05 14:07

第一题

p=&m;// p存放变量m的地址,或者说p指向m
q=&n; // q存放变量n的地址
r=p; //r存放指向m的地址
p=q; //p存放指向n的地址
q=r; //q存放指向m的地址,结果p和q通过r交换了所指对象,p和q的内容改变了

第二题:

p=&x;q=&y; //p指向x,q指向y
fun(p,q); //p存放的内容(x的地址)通过函数调用传递给变量a,则a也指向x,同理b指向y
c=a;a=b;b=c; //修改变量a,b,c的内容,而这三个变量属于函数fun,返回时被放弃
fun(&x,&y); //与上面用p和q调用的实质完全相同,函数中不操作变量指向的内容,而仅倒腾变量本身,对主程序中的x和y没有影响,也没改变p和q的内容

热心网友 时间:2024-12-05 14:08

第一题,m=1,n=2所以先输出了1和2,然后p指针指向m,q指针指向n。在r=p;p=q;q=r;进行指针值交换后,p指向了n的地址,q指向了m的地址。所以输出了2,1。

第二题,第一次输出的是p和q指向的对象,输出3和5。
随后传入fun函数的是x和y的地址指针,但是只是交换了指针值,这并不影响到主函数中的指针p和q的值。所以输出来的数依然是3和5。

热心网友 时间:2024-12-05 14:09

很简单的
实参里面写的是地址,形参里写的是指针,比如int *p=1; 有一个函数定义为f(int *p){ xxxxx } 调用这个函数时用f(p) 这样子
再举个例子 如果int a=1; 调用f时要写 f(&a) 这样子 就这么传参数
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
绩效工资从工资里扣合法吗 无人机电机轴的主要功能有哪些? 闽侯南通多久发展 南通哪个位置最有潜力 南通未来的机遇有哪些 江苏南通的发展前景怎么样 南通这座城市未来发展前景怎样 我女儿阳历08年01月08日出生,{农历07年腊月初一}请高人帮忙改个名字... 我女儿是2012年1月10日10:35分出生的五行缺什么,取什么名字好 这种图片效果怎么做出来的,不是纯白板,仔细看有一个个均匀分布的小圆点... 春风杨柳万千条 意思6 春风杨柳万千条的下一句64 海尔冰箱冷藏室一直制冷零度以下是怎么回事70 春风杨柳万千条的意思38 过节给小朋友,国内儿童平板电脑哪个好? 我家用的是海尔冰箱…最近发现冷藏变成了0度,请问这是什么原因...8 春风杨柳万千条,六亿神州尽舜尧。是什么意思?13 送什么给小朋友会开心,国内儿童平板电脑哪个好? “春风杨柳万千条,六亿神州尽舜尧”是什么意思301 ...比较合适呢?说说原因,找一个比自己小的能够幸福一辈子吗?_百度... 打算7、8月份去海南自助游,除了三亚,海南各地值得一去的地方... 光强单位lux 和μmol&#47;㎡.s 换算关系10 TVB播《师奶madam》后都播什么了?我知道的是《四个女仔...6 光强单位lux 和μmol&#47;㎡.s 换算关系10 还说说什么百度?有问题都回答不了?还不是脑子呆―― 海洋工程装备技术专业前景 湖南人在异地怎么办理身份证,我现在在中山,求解决?3 从东莞汽车客运东站到深圳公明汽车站有没有直接到达的公交车?_百度知 ... 龙华有湖南人身份证代办点????8 湖南人在中山更换第二代身份证的详细地址电话3 数码宝贝里太一最后和谁结婚了?6 植物到达光的饱和点会干嘛?1 公务员可以考研吗?19 植物光照饱和后光合速率不再增加的原因2 我爱她,但表白3次被拒,最终回复男闺蜜,又不想放弃,肿么办? 家里凌晨一点 跑进来一只白猫代表什么?14 家里来了一只猫什么预兆836 每个人都需要有自己的空间 幼儿阅读三个笨学生活动准备2 注销要多久成功?1 表白被拒,说一直把我当闺蜜,接下来我该怎么办?3 师奶madam电视剧为什么看不到了 聚醋酸乙烯酯胶粘剂是什么?1 企业生产家具用的胶,它是化工企业吗2 有没有从东莞东火车站直达宝安区公明汽车站的客车? 凌晨有白猫进房间是什么预示 在东莞客运东站有没有直达深圳公明汽车站的车???几路车? 小班绘本阅读中三个笨学生教案如何导入2 《三个笨学生》中,老师是谁8 唯和惟分别是什么意思?分别用在什么地方?怎么区分?11