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

黑马程序员----指针

时间:2015-02-03 01:51:13      阅读:233      评论:0      收藏:0      [点我收藏+]

标签:

指针:

  • 格式:

    变量类型  *变量名;  如:int *p;

  • 注意点:

1.指针变量只能存储地址;

2.指针就一个作用,能够根据一个地址值,访问对应的存储空间;

3.指针变量p前面的int,代表p只能指向int类型的数据;

  • 注:

在64位编译器中,指针变量都是占用8个字节,但是为什么还要分为:char *p; int *p;等,是因为在取值时,*p会从p存储的地址开始,取一定的字节(如:int就会从p所存储的地址开始向下4个字节)

 

一、指针的基本使用

例:

int *p; // 定义了一个指向int类型数据的指针变量p

int a = 90; // 定义了一个int类型的数据a = 90

p = &a; // &a :取得变量a的地址,并且赋值给指针变量p

*p = 10; // 对p所指向的存储空间赋值(*)

解析:a = 90   -->   10;

注意点:

   int *p; 中的*和*p = 10;中的*意思是不一样的;

   int *p;中的*代表一个指针变量(标志)

   *p = 10;中的*代表对p指向的存储空间进行赋值

代码练习一:

技术分享

运行结果:

技术分享

 

二、指针变量的使用注意

  • 注意点一:

   // 不建议这样写 int *p 只能指向int类型的数据
    // 警告: warning: incompatible pointer types assigning  to ‘int *‘ from ‘double *‘ [-Wincompatible-pointer-types]
    int *p;
    
    double a = 10.0;
    
    p = &a;

 

  • 注意点二:

   // 指针变量只能存储地址
    // 警告(warning: incompatible integer to pointer   conversion assigning to ‘int *‘ from ‘int‘ [-Wint-conversion])
    int *p;
    p = 200;

 

  • 注意点三:

   // 指针变量未经过初始化,不要拿来间接访问其指向的存储空间(不明确)
    // 没有警告、输出0
    int *p;
    
    printf("%d\n", *p);

 

  • 注意点四:

// 定义变量时的*仅仅是一个象征,没有其他特殊含义
    int a = 9;
    int *p = &a; // 定义变量时的*仅仅是一个象征,没有其他特殊含义
    
    // *p = &a; // 不正确的写法  
          // 报警(warning: incompatible pointer to integer
                conversion assigning to ‘int‘ from ‘int *‘; remove & [-Wint-conversion])
p = &a; *p = 20; // 这里的*的作用:访问(赋值)指针变量p指向的存储空间 printf("%d\n", a);

 

  • 代码练习:

技术分享

 运行结果:

技术分享

 
 
 
 

黑马程序员----指针

标签:

原文地址:http://www.cnblogs.com/unique-ios/p/4268999.html

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