一、指针变量的初始化
C语言中指针变量是不能与现有变量用一个名字简单来说就是同名
在定义指针变量时,任何一个指针变量前都要有*
如:int *p,*a,*b;而不能写成: int *p, a, b;
在C语言的使用过程中我们知道指针的变量与内存地址是直接相互关联的,因此在我们使用的过程中指针变量,经常会用到如下两个重要的指针运算符:
取地址运算符“&” 取内容运算符“*”
接下来我们通过一段代码来理解C语言指针的使用
实例分析
例
int *i_pointer, k,i;
k=i;
k=*i_pointer;
如上
直接访问和间接访问两种形式
分析以下程序的运算结果,注意指针的定义与使用。
#include <stdio.h>
int main( )
{
int m,*p;
p=&m;
printf("Please input m:");
scanf("%d",p);
printf("%d\n",*p);
m=4;
printf("%d ,%d\n", m,*p);
*p=8;
printf("%d ,%d\n", m,*p);
return 0;
}
程序运行结果如下: Please input m:2↙ 2 4,4 8,8
那么我们可以思考是否可以对代码进行一个改进那
修改上面程序,通过修改指针指向,实现从大到小输出两个整数。
int main( )
{
int *p1,*p2,*t,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);
return 0;
}