全站搜索未启用
跳到主要内容

文本二:指针变量的定义和使用

指针变量:用来保存指针,即保存一般变量的值(内容)所占用的存储空间的首地址。

1.指针变量的定义格式:

  <类型关键字>*<指针变量名字>[=<<指针表达式字>],...;

与一般变量定义语句格式基本相同,只要在变量标识符前加上*。

2.指针变量定义语句举例:

(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

3.指针也可以作为数据项输出

在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

4.向字符指针所指向的字符数组空间输入字符串

char a[30];

scanf("%s",a);//或者gets(a);

char name[10], *p=name;

scanf("%s",p);//或者gets(p);

5.利用typedef语句定义指针数据类型

(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];

最后修改: 2019年09月26日 Thursday 18:58