1、什么是指针:
指针是一种数据类型(*)。在指针声明时,*指示声明了一个指针变量。指针变量实际就是一个整数,存储着一个内存地址(计算机中的内存都是编址的,每个地址都有一个符号)。
指针变量是占有内存空间的
2、指针的用法
(1)在指针的使用时,*号表示:操作指针所指向的内存空间中的值
*p相当于通过地址(p变量的值)找到一块内存;然后操作内存
*p=:*p放在等号的左边赋值,表示给所指向的内存赋值
=*p:*p放在等号的右边取值,表示从内存中获取值
(2)使用指针实现间接赋值(间接赋值是指针存在的最大意义)
首先要明确一个概念:指针变量和它所指向的内存块变量是两个不同的概念
定义一个指针变量*p
①在给p赋值时,只会改变p所指向的内存地址(指针变量的值),并没有改变p所指向的内容(内存块的值)
②给*p赋值*p='a'; 不会改变p所指的内存地址(指针变量的值),只会改变所指的内存块的值 。
接下来看看间接赋值的理解:
int *p=NULL(int *p,p=NULL);//定义一个指针变量p,他的地址为0;
int a=10;
p=&a;//把a的内存地址赋给p;
*p=20;//改变p所指的内存块的值,也就是改变了a的值
上面就是指针通过地址来间接修改变量的用法
这仅仅是对指针的一个初步认识,指针有一级指针、二级指针、三级指针等,还有野指针,指针数组和数组指针等知识点。对于指针的学习,目前掌握的远远不够,但是要想有好的基本功底,就应该要去啃透它,加油!
文章的最后,本人有个小疑问,一旦定义了一个变量,系统就会自动给变量分配内存,那是不是每一个内存都含有两个元素:内存地址值和内存块的值?也不知表达的对不对?
以上文字出于个人的学习笔记,如若有问题,欢迎提出!
————总有一天,你将破蛹而出!