开篇:润墨网以专业的文秘视角,为您筛选了一篇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程序设计教程崔武子等编清华大学出版社