| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1354 人关注过本帖
标题:指针的*问题
只看楼主 加入收藏
daienkai
Rank: 1
等 级:新手上路
帖 子:30
专家分:7
注 册:2017-1-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
指针的*问题
这是输入两个数 从大到小输出 代码正确 有几个地方不清楚怎么回事

#include<stdio.h>
int f(int *p1 , int *p2);
int main()
{
    int a , b , z;
    int *p1 , *p2 ,*p;
    scanf("%d%d",&a,&b);
    p1=&a , p2=&b;//第一问题这里为什么不能写成*p1=&a
    printf("p1=%d p2=%d",p1,p2);
    printf("*p1=%d *p2=%d",*p1,*p2);
    if(a<b)
    {
       f(p1,p2);//第二个问题这里为什么不能是(*p1,*p2)
    }
    printf("\na=%d,b=%d\n",a,b);
    printf("p1=%d p2=%d",p1,p2);
    printf("*p1=%d *p2=%d",*p1,*p2);
}
int f( int*p1 , int *p2)
{
    int t;//这里如果定义一个指针然后把下面的t换成*t怎么程序错误了
    t=*p1;
    *p1=*p2;
    *p2=t;
   
}

搜索更多相关主题的帖子: include 
2017-02-10 11:27
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:5 
p1=&a , p2=&b;//p1,p1是指针保存的是地址,而*p1,*p2表示值(就是p1,2指向的地址中的值)
f(p1,p2);//在参数的传递中,传地址给子函数,在子函数中修改地址下的值,在主函数中p1,p1指向的值发生变化
int t;//改成*t后,t也变成指针,那在后面  *p为int类型的值,不能赋值给指针t。
2017-02-10 12:06
宇宙规律
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:232
专家分:128
注 册:2014-5-7
收藏
得分:5 
#include<stdio.h>
int f(int *p1 , int *p2);
int main()
{
    int a , b , z;
    int *p1 , *p2 ,*p;
    scanf("%d%d",&a,&b);
    p1=&a , p2=&b;//(p1是a地址;*p1是a的数值;)
    printf("p1=%d p2=%d",p1,p2);
    printf("*p1=%d *p2=%d",*p1,*p2);
    if(a<b)
    {
       f(p1,p2);//*p3和*p4是形式参数;p1和p2是所指向的变量(实际参数)的地址;程序是将p1和p2是所指向的变量(实际参数)的地址传递给*p3和*p4(形式参数)
    }
    printf("\na=%d,b=%d\n",a,b);
    printf("p1=%d p2=%d",p1,p2);
    printf("*p1=%d *p2=%d",*p1,*p2);
}
int f( int*p3 , int *p4)
{
    int t;//程序是将p1和p2是所指向的变量(实际参数)的地址传递给*p3和*p4(形式参数)
    t=*p3;
    *p3=*p4;
    *p4=t;
   
}
2017-02-10 12:45
kelehaier
Rank: 2
等 级:论坛游民
帖 子:12
专家分:39
注 册:2011-11-13
收藏
得分:5 
指针真是C语言中一个很让人讨厌的东东,尤其是*号,让人摸不着头脑啊!
我想过一段时间,就是怎样才能把指针说清楚,从而总结了一个方法,从4个属性来理解指针,如下:
指针变量p=(指针自己的值,与星号结合名,有用数据的值,有用数据的类型)。
第一个属性是指针p自己的值,其余的属性都是p指向的那个值相关。具体的可以参考我知乎上的这篇文章:https://zhuanlan.
另外,可以关注我的今日头条号:“C语言教学”或者微博“C语言编程技术分享”,希望对你有帮助!


学习C语言,请关注微博与微信:C语言编程技术分享
2017-02-10 13:24
qdcs
Rank: 6Rank: 6
等 级:侠之大者
威 望:5
帖 子:171
专家分:458
注 册:2016-12-22
收藏
得分:5 
程序代码:
#include<stdio.h>
int f(int *p1 , int *p2);
int main()
{
    int a , b , z;
    int *p1 , *p2 ,*p;
    scanf("%d%d",&a,&b);
    p1=&a , p2=&b;//第一问题这里为什么不能写成*p1=&a.....这是严重错误 加*就是a的值的意思
    printf("p1=%d p2=%d",p1,p2);
    printf("*p1=%d *p2=%d",*p1,*p2);
    if(a<b)
    {
       f(p1,p2);//第二个问题这里为什么不能是(*p1,*p2)... p1是a的地址,*p1是a值,不一样
    }
    printf("\na=%d,b=%d\n",a,b);
    printf("p1=%d p2=%d",p1,p2);
    printf("*p1=%d *p2=%d",*p1,*p2);
}
int f( int*p1 , int *p2)
{
    int t;//这里如果定义一个指针然后把下面的t换成*t怎么程序错误了... 定义的类型不匹配。 能编译通过
    t=*p1;    //变量t赋值a的值  如果用*t则代表t变量的值所表示的内存地址里的数据,而且没定义过
    *p1=*p2;  //变量a赋值b的值
    *p2=t;    //变量b赋值t的值即原a的
   

  

}



[此贴子已经被作者于2017-2-10 14:43编辑过]


我是硬件工程师
2017-02-10 14:16
快速回复:指针的*问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016131 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved