鱼C论坛

 找回密码
 立即注册
查看: 3441|回复: 14

[技术交流] 关于指针和指针变量

[复制链接]
发表于 2014-1-23 12:22:14 | 显示全部楼层 |阅读模式

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

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

x
//指针指向的值的输出和指针变量的赋值
#include<stdio.h>
int main()
{
      int *p_a,*p_b;
      int a,b;
      a=1;
      b=0;
      p_a=&a;
      printf("1---p_a=%d\n",p_a);//p_a指向a的地址所以p_a输出的是a的地址  p_a=1245044
      printf("2---a=%d\n",a);//a输出a的值                                a=1
      printf("----p_a=%d\n",*p_a);//通过*对a的地址取值,所以p_a输出的是a的值 p_a=1

      *p_a=2;
      printf("3---a=%d\n",a);//通过指针变量给变量赋值a的值发生了改变     a=2
      printf("4---p_a=%d\n",p_a);//指针指向的a的地址没有改变             p_a=1245044

      p_b=&b;
      printf("5---*p_b=%d\n",*p_b);//通过*对b的地址取值,所以p_b输出的是b的值 *p_b==0
      printf("p_b=%d\n",p_b); //输出时没有使用*取值,所以p_b输出的是b的地址   b=1245040
      printf("b=%d\n",b);  //b输出b的值                                        b=0

      *p_b=b;

      printf("6---p_b=%d\n",p_b);  //p_b输出的是b的地址                     p_b=1245040     
      *p_b=3;
      printf("7---p_b=%d\n",p_b);  //p_b输出的是b的地址                      p_b=1245040
      printf("8---b=%d\n",b);   //通过指针变量给变量赋值 b的值发生了改变     b=3


      p_b=b; //没有指针变量没有*,或者=号后面的变量没有& 编译器会给出错误警告
      printf("9---p_b=%d\n",p_b);//p_b输出 3                                p_b=3
      printf("10---b=%d\n",b);   //输出b的值                                b=3
}

/*通过上面的各种组合和对应的结果看出
1) p_a=&a;
输出时 p_a 指向的是a的地址,a不受被指向的影响,输出本身的值。
*p_a 输出a的值,充分说明*用在输出参数前面时是用来取值的

2)*p_a=2;
输出时 a=2,这是因为*p_a通过指向给a赋了新值了。所以a从1变成了2;
p_a在这里依旧是指向的a的地址

3) p_b=&b;
输出时 p_b 指向b的地址,就输出b的地址

4)p_b=b;
这样的书写格式是会收到编译器警告的,但是貌似还是可以有输出,
不知道这样的强行输出会不会对输出结果有影响
p_b 输出b的值3   b也输出自己的值

虽然总结了这么多,但是我还是分不清p_a 和p_b什么时候是指针,什么时候是指针变量。知道的朋友请给讲解一下
谢谢了{:1_1:}
*/
/*
以上是我自己总结的,肯定会有疏漏和错误的地方,希望看到的朋友给予补充和指正
一起努力,有经验一起分享
*/

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-1-23 17:00:54 | 显示全部楼层
这应该是 技术交流吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-23 19:15:58 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-23 23:12:56 | 显示全部楼层
貌似没什么问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-23 23:46:18 | 显示全部楼层
   楼主问的问题:p_a,p_b什么时候是指针变量,什么时候是指针,这个是什么意思。。。你程序中给的定义int *p_a,*p_b;这说明p_a,p_b是一个指向整型的指针变量,其存储的内容是指针。我用的VC++6.0,编译p_a=a,不能将一个整型变量值赋给指针型变量,这句有错误,所以没有输出。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-24 00:20:24 | 显示全部楼层
俺来学习  路过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-24 10:02:55 | 显示全部楼层
千里婵娟 发表于 2014-1-23 23:46
楼主问的问题:p_a,p_b什么时候是指针变量,什么时候是指针,这个是什么意思。。。你程序中给的定义int  ...

p_b=b; //没有指针变量没有*,或者=号后面的变量没有& 编译器会给出错误警告
我这些后面都有注解的,是有警告,但是我这输出了。我们用的相同的编译器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-24 19:04:11 | 显示全部楼层
yu457001 发表于 2014-1-24 10:02
p_b=b; //没有指针变量没有*,或者=号后面的变量没有& 编译器会给出错误警告
我这些后面都有注解的,是 ...

      反正我的VC++6.0是不能运行。。改用了一下DEV C++,可以运行,p_b=b输出p_b是b的值,这句的意思可以理解为把b的值作为地址赋给p_b,p_b表示的还是地址,不知道C标准里这样是不是允许的,但我感觉最好别这样用。。因为如果这样用,那么程序员在C程序里能够随意使用内存单元,这样是很危险的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-25 00:19:15 | 显示全部楼层
来学习学习来学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-1-25 10:36:01 | 显示全部楼层
千里婵娟 发表于 2014-1-24 19:04
反正我的VC++6.0是不能运行。。改用了一下DEV C++,可以运行,p_b=b输出p_b是b的值,这句的意思可以 ...

呵呵,我是才开始学,这样写只是为了看看会出什么样的错误和结果,以便加深自己的理解和印象
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-25 17:36:22 | 显示全部楼层
指针存储的是地址,比如:
int A;   
int *pointA=A;
指针是一个变量,它有自己的内存空间,但是不存储具体的值,而是存储它指向的变量的地址!
如果A是INT,那么&A就是A的地址,也就是放在pointA中存储的、

*是操作符,可以叫解除引用操作符,将它用于指针,就是*pointA,那么他就是代表A的值了,这时候就不是地址了!
简单总结,A是变量,pointA是指针存放A的地址,*pointA表示存储在改地址的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-26 00:27:54 | 显示全部楼层
这是一个较全面的总结吧!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-26 00:31:54 | 显示全部楼层
感谢分享    学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-5 23:04:29 | 显示全部楼层
俺来学习  路过
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-2-6 01:09:22 From FishC Mobile | 显示全部楼层
c把一个变量的地址称作指针,存放指针的变量称作指针变量。所以a的地址就是a的指针。那么你用定义了p_a来存放地址,那么p_a就是指针变量。第一句翻书找的。刚学不久。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-19 20:47:57 | 显示全部楼层
一起学习指针
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 14:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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