C语言中指针的基本用法|c语言中的指针

来源:求职职场 发布时间:2019-03-12 05:36:22 点击:

  指针是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;ix);
  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程序设计教程崔武子等编清华大学出版社

推荐访问:指针 用法 语言
上一篇:语言的艺术 卡耐基【JAVA语言中的参数传递探究】
下一篇:最后一页

Copyright @ 2013 - 2018 四八文档网-文档下载,办公室文档软件 All Rights Reserved

四八文档网-文档下载,办公室文档软件 版权所有 沪ICP备09019570号-4