[掌握并理解]指针的基本用法及特点 指针: 一。是什么? 严格来讲,指针有两种含义:1.是指一种数据类型;2.是一种保存地址的变量
二。有什么用? 用于存储某一个地址,从而可以通过地址直接对该地址内存空间中的数据进行操作
三。怎么用? 定义:int *p = NULL;//定义了一个能存int类型地址的指针p 赋值: //指针区分类型:方便运算时指针的移动 四。什么时候用? 当需要存储地址,以便于操作改地址以及地址对应的内存及地址对应的内存数据 //注意:指针作为函数参数传递时传递的是地址,这个参数依旧是新定义的局部变量,只不过这个变量里面存放的时地址,我们可以直接通过地址访问变量的内容 #include <stdio.h> void change(int *p){ *p = 100; printf("p's addr is %p,p is %p,*p is %d\n",&p,p,*p); return; } int main(){ int a = 10; printf("before a is %d\n",a); int *p = &a; printf("*p is %p,&a = %p,*p = %d\n",p,&a,*p); change(p); printf("after a is %d,p = %p,*p is %d\n",a,p,*p); return 0; }
五。特点:(p表示一个指针名) 1.指针本身也有地址,指针定义之后,自身地址不变,但里面的存的地址可以变化
2.&p表示指针自身地址,而p表示指针存的地址,*p表示指针所存地址的内存空间 3.指针不初始化赋值不要使用,去赋值前地址是随机的,未赋值不可以用*p 4.*修饰什么,就表示是什么类型的指针,判断原则,先确定变量的类型(根据符号优先级)
file:///var/folders/t0/rmtcrw9j6wq924w545wht0dm0000gn/T/WizNote/7f2047af-87f6-4a11-9d6d-294bfe1a41af/index_files/4319399.png int (*p4)[3] 表示一个长度为3的数组的指针; int *p5[3]:[]优先级比*高,表示一个元素为3个指针的数组;
5.指针是什么类型的,就应该存什么类型的地址。否则*p取对应内存空间的值会出错。
|