版权声明:您好,转载请留下本人博客的地址,谢谢 https://blog.csdn.net/hongbochen1223/article/details/45606681
该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; //定义3个int类型的变量
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是一个指针变量,他指向一个指向整型数据的指针变量
*/
}