指针

指针

指针就是地址,地址就是指针

地址就是内存单元的编号

指针变量是存放地址的变量

指针和指针变量是两个不同的概念‘

但是要注意:通常我们在叙述时,会把指针变量简称为指针,实际含义并不一样

# include <stdio.h>

int main(void)
{
int * p;
// p是变量的名字,int * 表示p变量存放的是int类型变量的地址
// int * p;不表示定义了一个名字叫做* p的变量
// int * p;应该这样理解:p是变量名,p变量的数据类型是int *类型。所谓int *类型就是存放int变量地址的类型
int i = 3;

//p = &i; //ok
//p = i; //error,因为类型不一致,p只能存放int类型变量的地址,不能存放int类型的值
   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的内容为地址的变量
*/



return 0;
}
  1. 指针的重要性:表示一些复杂的数据结构 快速的传递数据 减少内存的耗用【重点】 使函数返回一个以上的值【重点】 能直接访问硬件 能够方便的处理字符串

    是理解面向对象语言引用的基础

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

  2. 指针的定义

    1. 地址:内存单元的编号,从0开始非负整数

      地址的范围:4G[0----4G-1]

    2. 指针:指针就是地址,地址就是指针

      指针变量就是存放内存单元编号的变量,或者说指针变量就是存放地址的变量

      指针的本质就是一个操作受限的非负整数

  3. *的含义

    1. 乘法

    2. 定义指针变量

      int * p;// 定义了一个名字叫p的变量,int *表示p只能存放int变量的地址

    3. 指针运算符

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

      如果p是一个已经定义好的指针变量

      则 *p 表示 以p内容为地址的变量

    4. 如何通过被调函数修改主调函数普通变量的值

      4.1>实参必须为普通变量的地址

      4.2>形参必须为指针变量

      4.3>被调函数中通过 *形参名 = ... 的方式就可以修改主调函数相关变量的值

原文地址:https://www.cnblogs.com/icoding233/p/13174096.html