文档章节

使用指针比较整型数据的大小

陈洪波
 陈洪波
发布于 2015/05/19 19:34
字数 763
阅读 18
收藏 0

该C实例是一个比较简单的实例,但是在该实例中,重点介绍了C语言中比较常用的也是容易出错的指针变量,其中包括指针变量的赋值,指针变量的运算等等。该实例实现了通过使用指针变量来比较3个整形数据,使其从小到大排列,实现比较简单,下面附上我的代码:

#include <stdio.h>

/**
 * 通过指针比较三个整数的大小
 * @brief main
 * @return
 */

/**
 * 指针,即为变量的地址;指针变量,即数值为
 * 指向变量地址的变量
 * 指针变量的类型:
 * 对指针变量的类型说明包括3个内容
 *  1:指针类型说明,即定义变量为一个指针变量
 *  2:指针变量名
 *  3:变量值(指针)所指向的变量的数据类型
 * 其一般形式为:
 *  类型说明符 *变量名;
 *  其中,*表示这是一个指针变量,变量名即为定义的指针变量名,
 *  类型说明符表示本指针变量所指向的变量的数据类型
 *
 *  指针变量的赋值:
 *  C中提供了地址运算符"&"来表示变量的地址
 *  要把整型变量a的地址赋予p可以有下面两种方式:
 *  (1)指针变量初始化方法
 *      int a;
 *      int *p = &a;
 *  (2)赋值语句的方法
 *      int a;
 *      int *p
 *      p = &a;
 *
 *  指针变量的元算:
 *  1:指针运算法
 *      (1)取地址运算符&
 *      (2)取内容运算符*
 *  2:指针变量的元算
 *      (1)赋值运算
 *      (2)加减运算符
 */



int main(void)
{
    int x,y,z;  //定义3int类型的变量
    int *xp = &x, /*定义指针变量xp,并赋值为x的地址,使其指向x*/
        *yp = &y, /*定义指针变量yp,并赋值为y的地址,使yp指向y*/
        *zp = &z; /*定义指针变量zp,并赋值为z的地址,是zp指向z*/

    int t;

    printf("Please input x,y,z:\n");
    scanf("%d%d%d",xp,yp,zp); /* 通过变量的指针,为变量输入值 */

    if(*xp > *yp){  /*通过指向变量的指针引用变量的值*/
        t = *xp;
        *xp = *yp;
        *yp = t;
    }

    if(*xp > *zp){
        t = *xp;
        *xp = *zp;
        *zp = t;
    }

    if(*yp > *zp){
        t = *yp;
        *yp = *zp;
        *zp = t;
    }

    printf("x = %d,y = %d,z = %d\n",x,y,z);
    return 0;

    /** * 与指针有关的类型: * int i; //定义整型变量i * int *p; //p为指向整型数据的指针变量 * int a[n]; //定义数组a,他有n个元素 * int *p[n]; //定义指针数组p,他有n个指向整型数据的指针元素组成 * int (*p)[n]; //p为指向n个元素的一维数组的指针变量 * int f(); //f为返回整型函数值的函数 * int *p(); //p为返回一个指针的函数,该指针指向整数型数据 * int (*p)(); //p为指向函数的指针,该函数返回一个整数值 * int **p; //p是一个指针变量,他指向一个指向整型数据的指针变量 */
}

本文转载自:http://blog.csdn.net/hongbochen1223/article/details/45606681

陈洪波
粉丝 2
博文 76
码字总数 1552
作品 0
济南
程序员
私信 提问
指针的使用

1.指针与别名陷阱 如果有一块内存区域,指向这块内存区域的指针有多个,其中每一个指针都是其他指针的别名。 别名操作在优化程序是会造成很多麻烦,如下面的例子: 上面的两段代码,第一段访...

大道无名
2016/10/22
17
0
C语言程序设计编程学习—内存操作函数库mem.h相关知识详解

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
2018/03/24
0
0
C语言_基本数据类型范围、类型之间的转换规则、打印某个内存连续的内存值

今天在将一个4字节大小的宏(#define (unsigned long)0x0000FFFF)强制类型转化为8个字节; 然后再左移4个字节(<<32)后;再加上这个宏本身,赋值给一个8字节的变量。产生了一些错误,比较典...

沙米笔记
2016/03/25
76
0
链表的C语言实现(含动态内存分配)

链表的C语言实现(含动态内存分配) 上 链表的C语言实现之动态内存分配 一、为什么用动态内存分配 但我们未学习链表的时候,如果要存储数量比较多的同类型或同结构的数据的时候,总是使用一个数...

晨曦之光
2012/03/09
726
0
关于int整形变量占有字节问题 面试有用

int的长度由处理器(16位,32位,64位)和比哪一期决定。 首先从处理器来讲 :16位处理器中的int 占有16位 即2个字节 32位处理器中int占有32位 即4个字节 64位处理器中int占有64位 即8个字节...

itJackChen
2011/09/01
2.7K
0

没有更多内容

加载失败,请刷新页面

加载更多

3_数组

3_数组

行者终成事
今天
7
0
经典系统设计面试题解析:如何设计TinyURL(二)

原文链接:https://www.educative.io/courses/grokking-the-system-design-interview/m2ygV4E81AR 编者注:本文以一道经典的系统设计面试题:《如何设计TinyURL》的参考答案和解析为例,帮助...

APEMESH
今天
7
0
使用logstash同步MySQL数据到ES

概述   在生成业务常有将MySQL数据同步到ES的需求,如果需要很高的定制化,往往需要开发同步程序用于处理数据。但没有特殊业务需求,官方提供的logstash就很有优势了。   在使用logstas...

zxiaofan666
今天
10
0
X-MSG-IM-分布式信令跟踪能力

经过一周多的鏖战, X-MSG-IM的分布式信令跟踪能力已基本具备, 特点是: 实时. 只有要RX/TX就会实时产生信令跟踪事件, 先入kafka, 再入influxdb待查. 同时提供实时sub/pub接口. 完备. 可以完整...

dev5
今天
7
0
OpenJDK之CyclicBarrier

OpenJDK8,本人看的是openJDK。以前就看过,只是经常忘记,所以记录下 图1 CyclicBarrier是Doug Lea在JDK1.5中引入的,作用就不详细描述了,主要有如下俩个方法使用: await()方法,如果当前线...

克虏伯
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部