码迷,mamicode.com
首页 > 其他好文 > 详细

指针的含义——指针变量、指针的指针、指针使用的注意

时间:2015-10-26 22:40:01      阅读:247      评论:0      收藏:0      [点我收藏+]

标签:

指针其实很容易理解的,其他并不是大家想象的那么神奇,那么难。

一、指针的含义:指针其实就是一个变量,它所存放的不是数据,而是数据在内存中地址。当然指针也可以存放函数(方法)的地址,后面会讲到的。声明指针的关键符是*号,指向地址的关键符是&。

二、指针变量:

例如1:#include <stdio.h>

   int main

  { 

     int a =10;             //第一一个变量a,赋值为10

    int *p = &a;            //p就是一个指针变量,所指向的就是变量a的地址

    printf("%d\n"  ,  p);      //输出指针变量P所指向该地址的变量a的值

     }

 

例如2通过指针修改变量的值:

#include <stdio.h>

void change(int *a);

int main

  { 

     int a =10;             //第一一个变量a,赋值为10

   change(&a);           //p就是一个指针变量,所指向的就是变量a的地址

 

    printf("%d\n"  ,  a);      //输出指针变量P所指向该地址的变量a的值

     }

void chage(int *a)

{

  *a =20;          //通过指针修改a的值

}

技术分享

三、指针的指针:通过上面介绍的指针含义跟指针变量,对于指针的指针字面上来理解大家应该能懂了吧,下面举个例子:

int mait

{

  int a = 20;             //第一一个变量a,赋值为10

  int *p = &a;            //p就是一个指针变量,所指向的就是变量a的地址

    int **pp = &p;           //pp就是一个指针的指针变量,所指向的就是变量指针变量p的地址(&p表示指针变量p的地址)

      printf("%d\n" , **pp)       //输出的值就是a的值

}

输出:20

上面的例子这样写的话你们会更明白  *pp == p;        //指针变量*pp找到指针变量p的存储空间

                 *(*pp) = *p = a;    //指针变量*pp找到所指向地址的值(两者相同)

                 **pp = *p = a;    //指针变量*pp找到所指向地址的值(两者相同)

技术分享

 

 

四、指针使用的三大注意:

①:指针类型只能指向相同类型的数据

 

错误演示1:

 #include <stdio.h>

int main

{

 

  int *p ;

  double d = 10.0 ;

  p = &d;

 

  printf("%d\n" , *p);    //不会报错,只会警告!

 

}

 

②:指针变量只能存储地址

错误演示2:

#include <stdio.h>

int main

{

  int *p ;

   p = 200;       //p只能存储地址 , 除非200是一个地址

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

}

③:指针变量未经过初始化,不要拿来间接访问其他存储空间

错误演示3:

#include <stdio.h>

int main

{

  int *p ;

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

}

 

指针的含义——指针变量、指针的指针、指针使用的注意

标签:

原文地址:http://www.cnblogs.com/2015-adong/p/4912446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!