首页 > 范文大全 > 正文

C语言中指针的基本用法

开篇:润墨网以专业的文秘视角,为您筛选了一篇C语言中指针的基本用法范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

指针是C语言中的一个重要概念,也是C语言中的一个显著特点的体现。利用指针可以十分方便地使用数组和字符串,使程序更加简洁,从而提高程序的效率。使用指针可以灵活地实现函数调用时的数据传递。指针支持动态分配内存。所以,要掌握好C语言,学好指针是十分必要的。本文归纳了指针的基本用法,也就是如何用指针表示变量、数组元素、字符串及结构体成员。

1.指针的定义

指针定义格式如下:

类型关键字 *指针变量名

2.用指针表示变量

例1:

int*p;

int a;

p=&a;

“*”是乘号,又可以定义指针,还可以取指针所指向的变量的内容。

#include

void main()

{

int *p,a;

int count=19;

p=&count;

a=*p;

printf("%d\n",a);

printf("%d\n",*p);

}

“*”放在可执行语句中的指针之前,表示取指针所指向的变量的内容。

“*”放在指针定义中时,称指针定义符。

该程序运行结果如下:

19

19

3.用指针表示数组元素

例2:

int*p,*q;

int a[10];

p=a;

q=a[2];

#include

void main()

{

int a[5]={1,2,3,4,5};

int *p=a;

for(p=a;p

{

printf("%d",*p);

}

printf(“\n”) ;

}

该程序运行结果如下:

12345

该例中输出的每个数组元素都是一个整型数。

#include

void main()

{

char a[]="ABCDE";

char *p=a;

for(p=a;p

{

printf("%c",*p);

}

printf("\n") ;

}

该程序运行结果如下:

ABCDE

该例中输出的每个数组元素都是一个字符。

4.用指针表示字符串

#include

void main()

{

char *p,s[]="abcdefgh";

p=s;

printf("%s\n",p);

p=s+1;

printf("%s\n",p);

printf("%c\n",*p);

}

该程序运行结果如下:

abcdefgh

bcdefgh

b

使用格式控制符%s,输出字符指针(即p)来输出字符串。

使用格式控制符%c,输出字符指针的间接(即*p)引用来输出字符。

同样的例子如下:

#include

void main()

{

char *p,s[]="abcdefgh";

p=s;

while(*p!='\0')

{

printf("%c",*p);

p++;

}

printf("\n");

p=s;

printf("%s\n",p);

p=s+1;

printf("%s\n",p);

}

该程序运行结果如下:

abcdefgh

abcdefgh

bcdefgh

#include

void main()

{

char a[]=”ABCDE”;

char *p=NULL;

for(p=a;p

{

printf(“%s\n”,p);

}

}

该程序运行结果如下:

ABCDE

BCDE

CDE

DE

E

#include

void main()

{

char a[]=”ABCDE”;

char *p=NULL;

for(p=a;p

{

printf(“%c”,*p);

}

}

该程序运行结果如下:

ABCDE

5.指针数组与指向数组的指针

指针数组就是数组元素为指针的数组。常用的指针数苏是一维一级指针数组,即数组是一维的,元素是一级指针。

指针数组定义的格式如下:

类型说明 *数组名[大小] 例如:int*ap[5];ap是一维一级指针,该数组有5个元素,每个元素是一个一级指针。

在实际应用中,常常使用一维一级指针数组来存放若干个字符串,这样操作起来比较方便。

例:编程实现输入星期几的数字后,输出该数字对应的英文全名。

#include

char *name[]={"","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};

main()

{

int week;

while(1)

{

printf("Enter week No.:");

scanf("%d",&week);

if(week7) break;

printf("Week No. %d is %s\n",week,name[week]);

}

}

该程序中指针数组name经初始化后有8个元素,name[0]不用,name[1]指向Monday,name[2]指向Tuesday …… 。

指向数组的指针,定义格式为:

int(*p)[4] 定义了一个指针,该指针指向二维数组,此二维数组每行有4个元素。

#include

int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};

main()

{

int (*p)[4];

p=a+2;

printf("%3d %3d %3d\n",p[0][0],p[1][1],p[-1][2]);

}

该程序运行结果如下:

907

6.用指针表示结构体成员

#include

void main()

{

structperson{charname[9];intage;};

structpersonclass[10] = { "John",17,

"Paul",19,

"Mary",18,

"Adam",16,},*p;

p=class+2;

printf("%c\n",p->name[0]);

}

该程序运行结果如下:

M

#include

struct tt

{int x; struct tt*y;}*p;

struct tt a[4]={20,a+1,15,a+2,30,a+3,17,a};

main()

{int i;

p=a;

for(i=1;i

{ printf(“%d ”,p->x);

p=p->y;

}

}

该程序运行结果如下:

20 15

首先,指针p指向数组a的首地址,a[0]。在循环中,i=1时,因此时p指向a[0],因此p->x的值是20。a[0]的第二个成员表示为p->y,此值为a+1,即a[1]的地址,也就是把这个值更新了指针p,i=2时,p->x即为a[1]的成员x的值15。

本文主要归纳了C语言中指针的基本用法,熟练地掌握指针的基本用法,为指针在程序中的应用打下一个良好的基础。在以后的文章中将详细介绍指针在程序中的应用。

参考文献:

C语言大学实用教程苏小红等编电子工业出版社

C程序设计教程崔武子等编清华大学出版社