基类型有以下两方面的作用:
1.基类型规定了指针变量中可存放哪类变量的地址
int *p1, i=5;
float f=3.14, *p2;
p1只能用来保存int型变量(比如i)的地址而不能把float型变量f的地址存放到p1中,否则会导致错误。
可用赋值语句
p1=&i;
把变量i的地址存放到指针变量p1中,这时变量p1的值为变量i的地址。
2.指针变量参与运算时,计算结果依赖于基类型
假设p为指针变量,k为任意整数,C规定,p+k的值依然表示地址,并且等于:
p的值+k×基类型变量所占存储单元的大小
与其他变量一样,在定义指针变量时可为它设置初值。 int i=5,*p=&i;
由于指针变量p中存放了变量i的地址,于是就在这两个变量之间建立了联系,人们把这种联系称为:
p是指向变量i的指针变量
或称 p指向变量i
例题
#include <stdio.h>
int main()
{
int m=3, n=5;
int *p1,*p2;
p1=&m;
p2=&n;
printf("%d %d\n",m,n);
printf("%d %d\n",*p1,*p2);
return 0;
}
例题
编程输出数组a的所有元素。
版本1
#include <stdio.h>
int main()
{
int a[5]={50,40,30,20,10};
int i;
for(i=0; i<5; i++)
printf(“%d ”,a[i]);
return 0;
}
//版本2
#include <stdio.h>
int main()
{
int a[5]={50,40,30,20,10};
int i;
for(i=0; i<5; i++)
printf(“%d ”, *(a+i));
return 0;
}
版本3
#include <stdio.h>
int main()
{
int a[5]={50,40,30,20,10};
int i, *p=a;
for(i=0; i<5; i++)
printf(“%d ”,p[i] );
return 0;
}
版本4
#include <stdio.h>
int main()
{
int a[5]={50,40,30,20,10};
int i, *p=a;
for(i=0; i<5; i++)
printf(“%d ”, *(p+i));
return 0;
}