本帖最后由 你说呢 于 2015-7-16 19:49 编辑
内存地址------内存中储存单元的编号也成为指针
内存单元的地址和内存单元中的数据是两个完全不同的概念
变量地址---系统分配给变量的内存单元的起始地址
指针的艺术
使用指针的好处:
1.为函数提供修改调用变量的灵活手段
2.让函数有多个返回值
3.可以改善木屑子程序的效率
4.在数据传递时,如果数据块较大(比如说数据缓冲区或比较大的结构),这是就可以使用指针传递地址而不是实际数据,即提高出书速度,又节省大量的内存
5.为动态数据结构(如二叉树。链表)提供支持
直接存取:变量名的赋值和取值 通过变量名
间接存取: 通过数据的地址
指针变量:允许用一个变量来存放指针,这种变量为指针变量,
指针就是一个地址 是一个常量
Int a=3; &A
指针变量定义
一般形式:类型说明符 *变量名
*表示一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型
Int *pi;
Long *pl
Float *pf;
Char *pc *号表示定义的变量是指针变量,变量的值只能存放地址
一个类型的指针只能指向同类型的变量,不能指向其他类型的变量
指针变量可以使局部的
指针变量的初始化和引用
指针的指向可以改变
指针没有初始化里面是一个垃圾值,这时候我们这时一个野指针
访问野指针
1.可能导致程序崩溃
2.访问你不该访问的数据
所以指针必须初始化才能可以访问其所指向的储存区域
作用:获取指针变量所指向的内存空间的内容
获取指针变量之所对应的储存单元
*的用法:
用于定义一个指针变量
存取指针变量指向的储存空间的内容
#include<stdio.h>
int main() {
int a=3,b=3;
int a1=10;
int *p=&a;//p指向a
int * p1=&a,*p2=&a;//p1 p2 都指向了a
int *p3=&b, *p4;//部分初始化
p4=&b;
int pp=*p4;
printf("%d\n",pp);
return 0;
}
|
|