F指针
地址形象的称为指针。一个已经定义的变量,想去引用它,有两种方式。一个是通过变量名,一个是通过访问该变量所在的地址。这就好比一栋房子的每个房间一样,你可通过门牌号找到这个房间的,对房间的东西进行操作,这个门牌号就是计算机给内存分配的地址,这是一种间接地方式。另外的方式就是直接找到这个房子的东西进行操作,这是一种直接的方式。
定义指针变量
类型名 *指针变量名
例:int *a
想引用一个指针变量 ,可以采用这样的方式
Int a=10;
Int *b=&a(int *b;b=&a)
Printf(“%d”,*b);
一般就是先定义一个变量a,再定义一个同类型的指针变量b,给指针变量b一个指向b=*a即可。
下面的这个例子通过引用指针变量求最大值
#include<stdio.h>
int main()
{
int a=10,b=5,*c,*d;
c=&a;//给指针一个指向
d=&b;
if(*c>*d)
printf("%d",*c);//输出该指针指向的内容
else
printf("%d",*d);
getch();
return 0;
}
指针其实给了我们很大的方便,给了我们随时随地取用变量的方法,就是找到存放变量的地址。
指针可以作为函数的参数,返回值一个是指针,一个是普通变量,对于字符型数组也是如此。
int *max(int *a,int *b)
{
if(*a>*b)
return a;
else
return b;
}
int main()
{
int a=10,b=5,*c,*d;
c=&a;
d=&b;
c=max(c,d);
printf("%d",*c);
getch();
return 0;
}
#include<stdio.h>
int max(int *a,int *b)
{
if(*a>*b)
return *a;
else
return *b;
}
int main()
{
int a=10,b=5,*c,*d;
c=&a;
d=&b;
a=max(c,d);
printf("%d",a);
getch();
return 0;
}
在下面的例子中还涉及到指针数组和数组指针的区别。指针数组一般是指向多维数组的。
指针数组:类型名 * 数组名 [数组长度],Int * p[4],[]的优先级比*高,所以这是一个指针数组,指向多维数组。
数组指针:类型名 *数组名 [数组长度] ,例int * p[4]
指针也可以多重的,这主要和多维数组有联系,这需要理解指针的跨步,即一步平移多少个字节。以二维数组为例,说明这个问题,这也是通过指针引用数组的例子。
#include<stdio.h>
int main()
{
int a[2][3]={1,2,3,4,5,6};
int *b,i,j;
b=*a;//指针指向数组起始地址
//多重指针每次移动是跨行的,
for(i=0;i<2;i++)
printf("%d\t",*(*(a+i)));
//要想输出数组的每个数据要采用以下的方法
printf("\n");
for(i=0;i<2;i++)
{
for(j=0;j<3;j++)
{
printf("%d\t",*(*(a+i)+j));
}
}
getch();
return 0;
}
通过指针引用字符串。
#include<stdio.h>
int main()
{
int i;
char a[]="qwertyuiop";
char *b;
b=a;
for(i=0;a[i]!='\0';i++,b++)
printf("%c",*b);
getch();
return 0;
}