
指针变量:用来保存指针,即保存一般变量的值(内容)所占用的存储空间的首地址。
<类型关键字>*<指针变量名字>[=<<指针表达式字>],...;
与一般变量定义语句格式基本相同,只要在变量标识符前加上*。
(1) int x, *p;//p的类型为int*
(2) int a=10, *pa=&a;//指针变量与指向的变量,其类型相同
(3) char *p1=0, *p2="pointer";//p1和p2均为char*类型
(4) char *d[5]={0};//定义数组d[5],每个元素为char*类型
(5) int x=5, *px=&x, **pp=&px;
x: int类型,px: int*类型,pp: int**类型
x:5;px:&x,px指向x;pp:&px,pp指向px
变量: x px pp
值: 5 &x &px
(6) char * rp[3]={"front","middle","rear"};//每个元素指向各自串
(7) int a[10], *ps=a;//数组名a的值是a[0]的地址,即&a[0]的值
//a[0]为int型,&a[0]为int*型,ps的值为&a[0],ps指向数组a
在printf函数中: 使用格式符"%p"时,输出指针值;
使用格式符"%s"时,输出字符指针所指向的字符串。
#include<stdio.h>
void main() {
int a=30;
char *cp;
cp="output";
printf("%p %p\n",&a,cp);//格式字符p是通用指针类型
printf("%d %s\n",a,cp);//格式字符s是字符指针类型
}
输出结果:
0013FF7C 0042002C
30 output
char a[30];
scanf("%s",a);//或者gets(a);
char name[10], *p=name;
scanf("%s",p);//或者gets(p);
(1) typedef int* inPointer;
//inPointer s1=NULL; 等价于int* s1=NULL;
(2) typedef char* chPointer;
//chPointer等价于char*
(3) typedef char *AA[10];//元素类型为char*
//定义AA为char*[10]类型,AA rs; 等价于char* rs[10];