指针简介变量的地址的概念 内存是以字节为单位进行编址的,内存中的每个字节都对应一个地址,通过地址才能找到每个字节。 变量对应内存中的一段存储空间,该段存储空间占用一定的字节数,用这段存储空间的第一个字节的地址表示变量的地址。 指针的概念 指针是一个变量,与普通变量不同的是,普通变量中存储的是数据,指针变量中存储的是另一个变量的地址。这样我们就可以通过指针间接的对普通变量进行操作。 指针的特点 指针是一个变量,可以在程序执行过程中改变它的值,即可以改变指针的指向。可以在某时刻指向变量x,也可以在另一时刻指向变量y 指针可存放 C 语言中的任何基本数据类型、数组和其他所有高级数据结构的地址 若指针已声明为指向某种类型数据的地址,则它不能用于存储其他类型数据的地址 应为指针指定一个地址后,才能在语句中使用指针 声明变量并初始化指针 与指针相关的运算符图解: 简介运算符 注意*预算符 int *p = 0xcc是对p本身值的初始化,就是p指向了位于0xcc地址的变量,这里的*代表声明一个指针变量,他是属于声明的一部分 而int *p,a;p = &a;*p=0xcc;注意补上了p指向a的代码 这里的*是一个操作符,*p代表了p所指变量,上面的情况就理解为a = 0xcc; 指针得点: 指针变量的命名规则和其他变量的命名规则一样 指针不能与现有变量同名 指针可存放 C 语言中的任何基本数据类型、数组和其他所有高级数据结构的地址 若指针已声明为指向某种类型数据的地址,则它不能用于存储其他类型数据的地址 应为指针指定一个地址后,才能在语句中使用指针 指针是一个变量,可以在程序执行过程中改变它的值,即可以改变指针的指向。可以在某时刻指向变量x,也可以在另一时刻指向变量y 指针预算符 实质:指针中存储的地址的运算。 类型: 指针赋值运算:赋地址运算。 指针加减运算: 指针 或- - 指针加减一个整数 指针比较运算:两个指针比较运算。 使用递增/递减运算符( 和 --)将指针递增或递减 将指针加上或者减去某个整数值 (以n*sizeof(T)为单位进行移动) 注意:只有当指针指向一串连续的存储单元时,指针的移动才有意义。才可以将一个指针变量与一个整数n做加减运算。 指向数组的指针: 一个数组存储在一块连续内存单元中;数组名就是这块连续内存单元的首地址; 第 (i 1) 个数组元素的地址可表示为 &data[i] 或 (data i) 可以通过以下方式为指向数组的指针赋值: int a[10]; pa=&a[0]; // 或者 pa=a; 一个指针变量可以指向一个数组元素 int *ptr,data[10]; ptr=data 3;//或者ptr=&data[3] 指针与数组数组与地址 数组名代表数组(元素)的首地址,即第一个元素的地址。 对数组的首地址加上偏移量x就可以得到其它元素的地址。 数组元素的访问 下标法: 用 a[i] 的形式存取数组元素。 地址法: 用 *(a i)的形式存取数组元素。 指针法:用指针变量p指向数组的首地址,然后通过移动指针存取数组元素。 如 p=a, *(p i) = 1。 注意: 1.数组名是一个常量,不允许重新赋值。 2.指针变量是一个变量,可以重新赋值。 3.p i和a i均表示数组元素a[i]的地址,均指向a[i] 4.*(p i)和*(a i)均表示p i和a i所指对象的内容a[i]。 5.*p :等价于*(p )。其作用:先得到*p,再使p=p 1。 6.(*p) :表示将p所指向的变量(元素)的值加1。即等价于 a[i] 。 7.指向数组元素的指针也可以表示成数组的形式,即允许指针变量带下标,如*(p i)可以表示成p[i]。 总结: 指针是一个变量,它存储另一个对象的内存地址 指针的声明由基本类型、星号 (*) 和变量名组成 为指针赋值,赋值运算符右侧必须是一个地址。如果是普通变量需要在前面加一个取地址运算符 &;如果是另一个指针变量或者是一个数组,不需要加 &运算符 运算符 * 用于返回指针指向的内存地址中存储的值 |
|
来自: Zsy20151225 > 《计算机(编程/网络/办公)》