指针相关笔记

指针的简单介绍:

/**

目的:指针的定义及简单介绍
时间:2015年7月15日10:43:50

*/

#include <stdio.h>

int main(void)
{
  int i = 3;

  int j;
  int * p; //p是变量的名字,int * 表示的是p只能存放int * 类型的变量的地址

  // error cannot convert from 'int' to 'int *' 因为p只能存放int类型变量的地址,而不能存放int类型变量的值
  // p = i;
  //p = 55;//error

  p = &i;

  /*

  p保存了i的地址,因此p指向i

  p不是i,i也不是p,也就是说,修改p的值不影响i的值,修改i的值也不影响p的值。

  如果一个指针变量指向某个普通变量,则  *指针变量   就完全等同于  普通变量。

    例子:如果p是个指针变量,并且p存放了普通变量i 的地址。

      则: p指向了普通变量 i 

        *p 就完全等同于  i  ,或者说,在所有*p出现的地方都可以替换成 i ,当然多有出现 i  的地方都可以替换成 *p

  *p就是以p的内容为地址的变量。

  */

  j = *p;
    
     printf("i = %d\n", i);
     printf("j = %d\n", j);
     printf("p = %d\n", *p);
     printf("p的地址为:%d\n", p);

  return 0;
}

/**
在VC++6.0中运行结果为:
-------------------------

i = 3
j = 3
p = 3
p的地址为:1638212
Press any key to continue

-------------------------

*/

 

指针和指针变量定义和区别:

   1、指针就是地址,地址就是指针,指针就是一个地址值,地址就是内存单元的编号

   2、指针变量是存放地址的变量。

   2、指针和指针变量是两个不同的概念。

   注意:通常我们会把指针变量简称为指针,实际它们的含义不一样。

 

指针的重要性:

  1、表示一些复杂的数据结构。

  2、快速的传递数据。

  3、使函数返回一个以上的值(即返回多个值)

  4、能直接访问硬件(获取变量地址)

  5、能方便的处理字符串

  6、是面向对象中引用的基础

  总结:指针是C语言的灵魂

 

指针的定义

  地址:

    内存单元的编号

    从零开始的非负整数

    范围:4G [0——4G-1]

  指针:

   1、指针就是地址,地址就是指针,指针就是一个地址值,地址就是内存单元的编号

   2、指针变量是存放地址的变量。

   2、指针和指针变量是两个不同的概念。

   注意:通常我们会把指针变量简称为指针,实际它们的含义不一样。

   指针的本事就是一个操作受限的非负整数。(指针不能进行加、不能进行乘、不能进行除。只能进行相减)

 

 

指针的分类:

  1、基本类型指针

    int * p; //p是变量的名字,int * 表示的是p只能存放int * 类型的变量的地址  p只能存放int类型变量的地址,而不能存放int类型变量的值

    /*

    p保存了i的地址,因此p指向i

    p不是i,i也不是p,也就是说,修改p的值不影响i的值,修改i的值也不影响p的值。

    如果一个指针变量指向某个普通变量,则  *指针变量   就完全等同于  普通变量。

    例子:如果p是个指针变量,并且p存放了普通变量i 的地址。

      则: p指向了普通变量 i 

        *p 就完全等同于  i  ,或者说,在所有*p出现的地方都可以替换成 i ,当然多有出现 i  的地方都可以替换成 *p

    *p就是以p的内容为地址的变量。

    */

  

         2附录:

                   *的含义

                            1、函数

                            2、定义指针变量  int  *p;

            //定义一个名字叫做p的变量,int  * 表示p只能存放int变量类型的地址。

                            3、指针运算符

                                     该运算符放在已经定义好的指针变量的前面,

                                     如果p是一个定义好的指针变量,则*p表示以p的内容为地址的变量。

                  如果通过被掉函数修改主函数普通变量的值,

        1、  实参必须为该普通变量的地址

        2、  形参必须为指针变量

        3、  在被掉函数中通过  *形参名  =  …………的方式就可以修改主调函数变量的值。

  2、指针和数组

      指针和一维数组

                            一维数组名

                                     一维数组名是个指针常量,它存放的是一维数组第一个元素的地址。

 

          下标和指针的关系

                                     如果P是指针变量,p[i]永远等价于*(p+i)

 

                            指针确定一个一维数组函数需要两个参数:数组名,数组长度。

 

 

                            指针变量的运算

            指针变量不能相加,不能相乘,不能相除。

            如果两个指针变量指向的是同一块连续空间中的不同存储单元,则这两个指针变量可以相减  

           

          一个指针变量到底占几个字节

                      预备知识:

                        sizeof(数据类型)

                        功能:返回值就是你该数据类型所占的字节数。

                          例子:sizeof(int) = 4   sizeof(double) = 8    sizeof(char) =1   

                                               sizeof(变量名)

                                               功能:返回值就是该变量所占字节数。

                                          p  q  r 是指针变量

                                               假设p指向char类型变量char *p = &ch;

                                               假设q指向int类型变量       int *q = &i;

                                               假设r指向double类型变量double *r = &j;

                                               p q r本身所占字节是否一样?

              结论:一个指针变量,无论它指向的变量占几个字节,该指针变量只占四个字节。

 

                                               #include <stdio.h>

                 int main(void)

                 {

                       char ch = 'A';

                       int i = 2;

                       double j = 3.3;

                       char *p = &ch;

                       int *q = &i;

                       double *r = &j;

                    //一个字节有一个编号,指针变量存储的是该变量的第一个字节所//对应的编号,       根据编号类型,判断变量类型

                       printf("%d  %d  %d\n",sizeof(p),sizeof(q),sizeof(r));

                         return 0;

                }

 

                /**

                在VC++6.0中运行结果为:

                ---------------------------

                4  4  4

                Press any key to continue

                结论:一个指针变量,无论它指向的变量占几个字节,该指针变量只占四个字节。

                */

 

 

  3、指针和函数

  4、指针和结构体

  5、多级指针

 

 

  

  

 

posted @ 2015-07-15 10:52  那年夏天、雪来过  阅读(152)  评论(0编辑  收藏  举报