A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Day11 笔记

1,指针

   指针是C语言的灵魂

   1),理解变量的值,变量的地址

   2),指针:变量的地址,指针就是地址,地址就是指针


2,指针变量

   1),首先是个变量,专门存储地址的
           所以指针变量中是存储了另一个指针变量的地址
           我们说 指针变量 只想了这个变量

   2),作用? 多了一种变量的访问方式

           int num = 10;
           num = 20;   直接访问

           int num = 10;
           int *p1 = # 间接访问

   3),数据类型 *指针变量名

           int *p1; 这个时候声明了一个指针变量,名字叫做p1 而不是*p1
           *代表声明的变量不是一个普通类型的变量,而是一个指针变量

   4),一个指针变量虽然是专门用来存储地址的,但是并不是什么地址都可以存。
           一个指针变量能够存储什么样的地址,和指针的类型相同的变量的地址。

           int *p1; 这个时候p1指针变量智能存储int类型变量的地址
           float * p2;这个时候p2指针变量职能存储float类型变量的地址

   5),指针变量 是一个变量

           所以命名规则规范要符合之前的要求
           一般情况下 指针变量用p开头 一看就知道是一个指针

           也可以批量声明; int *p1,*p2,*p3;
           注意每一个指针变量都要加 *


4,指针变量的初始化

   1),特点:专门存储地址,不能直接赋值常量和变量的值

   2),int *p1;
           声明了一个int *类型的变量叫做p1 不叫*p1
           p1的类型是 int* 读作 int指针

   3),赋值: int * p1;
                    p1 = #
           输出 指针变量 使用 %p 格式控制符

   4),注意:指针变量只能存储和这个指针类型相同的变量的地址 否则有问题


5,指针变量的使用

   1),通过指针间接访问指向的变量

           语法: *指针变量名

           int num = 10;
           int *p1 = #

           num = 20; 直接访问
           *p1 = 20; 简介访问
         (*p1 代表所指向的变量 即num)


   2),p1 代表指针变量 存的是地址
           *p1 代表所指向的变量 存的是数据


6,指针使用 注意三点

   1),野指针
           声明指针变量的时候没有初始化  有一个垃圾值 (随即值)
           有可能别的程序正在使用,系统正在使用
           如果取值,问题不大
           如果修改,相当危险

           所以,不要去操作野指针

   2),NULL值

           操作野指针很危险
           所以声明指针变量时最好初始化

           如果暂时不清楚指针变量指向的空间 可以先赋给NULL
           NULL代表不指向任何内存空间

           int *p1 = NULL; 不指向任何内存空间

           这个时候,如果通过p1访问指向的变量 就会出错

           NULL 与 0 时等价的

          int * p1 = 0 ; 也可以
          这个时候 0不代表整数的0 而是代表不指向任何内存地址

3),多个指针可以指向同一个变量

    通过任何一个指针操作变量都会改变这个内存地址中的数据


7,指针作为函数的参数


   指针变量的作用
   不仅仅是间接访问

   但函数的参数是一个指针的时候
   在函数的内部去访问一个变量 其实访问的是实参

   这是地址传递 而不是值传递


8,什么时候用指针作为函数的参数

   1),函数的内部希望可以去修改调用着的实参变量的值

           那么就可以将指针作为函数的参数,在传值时,讲调用着的变量的地址传入
           这个时候,函数内部就可以通过参数指针修改实参变量的值        

   2),函数只能有一个返回值

           那么函数讲一个返回值指针变量做参数,在函数中修改所指的变量
           可以达到返回的效果

           函数的参数定义为指针,要求调用者传入自己变量的地址
           函数内部将需要返回的数据直接通过指针赋值给调用着的变量




0 个回复

您需要登录后才可以回帖 登录 | 加入黑马