• c语言指针难 > 指针是C语言的精华部分
  • 指针是C语言的精华部分

    免费下载 下载该文档 文档格式:PDF   更新时间:2000-12-07   下载次数:0   点击次数:4
    文档基本属性
    文档语言:
    文档格式:PDF
    文档作者:123
    关键词:
    主题:
    备注:
    点击这里显示更多文档属性
    下载
    ptr1 &m m 3 ptr2 &f f 4.5
    第6章 指

    93
    ptr3 &ch
    ch a
    图6-3 赋值语句的效果
    需要说明的是,指针变量可以指向任何类型的变量,当定义指针变量时,指针变量的值 是随机的,不能确定它具体的指向,必须为其赋值,才有意义. 6.2.2 指针变量的引用 利用指针变量,是提供对变量的一种间接访问形式.对指针变量的引用形式为: *指针变量 其含义是指针变量所指向的值. [例6-1] 用指针变量进行输入,输出.
    main() { int *p,m; scanf("%d",&m); p=&m; /* 指针p指向变量m*/ printf("%d",*p); /* p是对指针所指的变量的引用形式 ,与此m意义相同*/ }
    运行程序:
    RUN 3 3
    上述程序可修改为:
    main() { int *p,m; p=&m; scanf("%d",p); printf("%d", m); }
    /*
    p是变量m的地址,可以替换&m*/
    运行效果完全相同.请思考一下若将程序修改为如下形式:
    main() { int *p,m; scanf("%d",p); p=&m; printf("%d", m); }
    会产生什么样的结果呢 事实上,若定义了变量以及指向该变量的指针为:
    int a,*p;
    94
    C语言程序设计
    下载
    若p=&a; 则称p指向变量 a,或者说 p具有了变量 a的地址.在以后的程序处理中,凡是可 以写&a的地方,就可以替换成指针的表示 p,a就可以替换成为 *p.
    6.3 指针运算符与指针表达式
    6.3.1 指针运算符与指针表达式 在C中有两个关于指针的运算符: &运算符: 取地址运算符, &m即是变量m的地址. *运算符:指针运算符, *ptr表示其所指向的变量. [例6-2] 从键盘输入两个整数,按由大到小的顺序输出.
    main() { int *p1,*p2,a,b,t; /* 定义指针变量与整型变量*/ scanf("%d,%d",&a,&b); p1=&a; /* 使指针变量指向整型变量*/ p2=&b; if(*p1<*p2) { /*交换指针变量指向的整型变量 */ t=*p1; *p1=*p2; *p2=t; } printf("%d,%d\n",a,b); }
    在程序中,当执行赋值操作 p 1 = & a和 p 2 = & b后,指针实实在在地指向了变量 a与b,这时 引用指针*p1与*p2,就代表了变量 a与b. 运行程序:
    RUN 3,4 4,3
    在程序运行过程中,指针与所指的变量之间的关系如图 6-4所示:
    p1 &a p2 &b a) a *p1 3 b *p2 4 p2 &b b) b *p2 3 p1 &a a *p1 4
    图6-4 程序运行中指针与变量之间的关系
    当指针被赋值后,其在内存的安放如 a),当数据比较后进行交换,这时,指针变量与所指 向的变量的关系如 b)所示,在程序的运行过程中,指针变量与所指向的变量其指向始终没变. 下面对程序做修改.
    下载
    [例6-3]
    main() { int *p1,*p2,a,b,*t; scanf("%d,%d",&a,&b); p1=&a; p2=&b; if(*p1<*p2) { /* 指针交换指向 */ t=p1; p1=p2; p2=t; } printf("%d,%d\n",*p1,*p2); }
    第6章 指

    95
    程序的运行结果完全相同,但程序在运行过程中,实际存放在内存中的数据没有移动, 而是将指向该变量的指针交换了指向.其示意如图 6-5:
    p1 &a a *p1 3 p1 &b a *p2 3

    上一页下一页

  • 下载地址 (推荐使用迅雷下载地址,速度快,支持断点续传)
  • 免费下载 PDF格式下载
  • 您可能感兴趣的
  • c语言指针  c语言指针视频教程  c语言指针函数编程题  c语言数组与指针  c语言指针的用法  c语言指针视频  c语言答案指针  c语言指针讲解  c语言指针教程