简单学C——第六天

 

指针小程序

  

   指针是c语言中很灵活的一个内容,固然,灵活的都是较难掌握的。不过,只要理解其实质,学习,运用指针仍是一件很轻松的事情的。函数

   首先理解,1.什么是指针?学习

   在c语言中,指针也同Int ,double 同样是一种数据类型,int 存放的是一个整型数字,double 存放的是一个双精度的数字,指针存放的是地址。记得老师讲过这样一个形象的例子:指针相似于一间仓库的门牌号。这个门牌号能体现这个房间的具体位置。spa

   2.指针有什么用?3d

   由于指针存放的是地址,因此指针能直接访问,传递那个地址上的数据和那个地址,这无疑对于咱们下次即将说的  函数 有很大的方便。初步了解指针仍是须要本身写几个小程序观察一下,而后就知道了。指针

   在写程序以前,须要知道怎么用指针。code

   由于指针也是一个数据类型,因此它的用法和 int的用法差很少都是同样的。首先,1.定义指针  ,其格式为  数据类型(如 int ,double ,struct) + *标识符; 数据类型的意义是,你如今定义的这个指针所存放的地址是指向什么数据类型的,例如 int *p; 它的意思就是定义一个指向整型数字的指针变量。blog

   那么,下面就写写小程序探索探索吧。内存

   code:io

 

#include<stdio.h>
int main()
{
   int a; //定义整型
   scanf("%d",&a);
   while(a--)
   {
       int *p;//定义整型的指针变量
       p=&a; //将a的地址赋给指针变量p
       //如今p存放的就是变量a所表明的数在计算机中所存放的地址了
       printf("%d--",*p);//输出p指向的地址存放的内容
       printf("%d\n",p);//输出p的地址
   }
}

运行结果:

从上面的代码中能够很明确的看出,指正存放的是变量的地址。那么思考一下,指针的地址又该是多少呢? 把上面程序的最后一个语句的前面加上一句 printf("%d--",&p);  运行以后能够看出是这样的结果。

   可见指针也是须要内存单元去存放的。

  上面存在的还比较陌生的符号再说一下,* 有两种用的地方1.在定义的时候用到,表明定义了一个指针变量,(如 int *p),2.在表达式中出现,表明取内容符号,取得p存放的地址里面存放的内容,(如 *p) 。还有 & ,它被用做取地址符,取得内容所存放的地址,(如 &p)。

  给两个数,交换这两个数,输出这两个数,相信每一位读者都会独立的写出此程序,可是为了麻烦起见,可否经过对地址的操做来交换这两个数呢?固然能。

code

#include<stdio.h>
int main()
{
  int a,b;
  int *p,*q,*w; //定义指针变量
  scanf("%d%d",&a,&b);
  p=&a; //p存放变量a的地址
  q=&b;//q存放变量b的地址
  printf("1:%d %d\n",*p,*q);
  //地址的交换,与两个数的交换方式同样
  w=p;
  p=q;
  q=w;
  //此时p存放变量b的地址,q存放变量a的地址
  printf("2:%d %d\n",a,b);
  printf("3:%d %d\n",*p,*q);
  printf("4:%d %d\n",&a,&b);
  printf("5:%d %d\n",p,q);

}

运行结果:

 

还须要提示的是,c语言中的不少东西都是能够镶嵌重叠的,这我曾屡次提到,并且指针也不例外  ,好比,你定义了这样一个变量 int **q;这个变量有什么用呢?它与int *p;有什么关系? 前面那个q表明着定义了一个二级指针,它的做用是指向一级指针的地址,如   q=&p; 把一级指针p的地址赋给二级指针 q。同时三级,四级都是同样的道理,只要记住指针保存的是地址,地址的内容与它所对应的数据类型有关。

 

指针被称为c语言中最难应用的部分,不过只要掌握原理,仔细想一想,一些基础的问题仍是能很容易想明白的。

相关文章
相关标签/搜索