C语言笔记之指针的初步认识

来源:互联网 发布:淘宝电风扇 编辑:程序博客网 时间:2024/05/07 13:16

       从学C语言到现在,也一年多了,指针作为C语言中最重要的一个知识点,人们也称指针是C语言的灵魂,然而对于指针的掌握,感觉远远不够指针在数据结构中也是很重要的,贯穿链表、栈、队列等,要想真正的学好和领悟数据结构的知识,指针功底一定要扎实。确实,这一年来,每次用到指针或是回头看指针的内容,都会有不同感受,所以决定通过资料整合,结合自己对指针的理解写一个总结,算是对指针的一次复习吧。

1、什么是指针:

指针是一种数据类型(*在指针声明时,*指示声明了一个指针变量。指针变量实际就是一个整数,存储着一个内存地址计算机中的内存都是编址的,每个地址都有一个符号

指针变量是占有内存空间的

2、指针的用法

1在指针使用时,*号表示操作指针所指向的内存空间中的值

*p相当于通过地址(p变量的值)找到一块内存;然后操作内存

*p=*p放在等号的左边赋值,表示所指向的内存赋值

    =*p*p放在等号的右边取值表示从内存获取值

(2)使用指针实现间接赋值(间接赋值是指针存在的最大意义)

首先要明确一个概念:指针变量和它所指向的内存块变量是两个不同的概念

定义一个指针变量*p

①在给p赋值时,只会改变p所指向的内存地址(指针变量的值),并没有改变p所指向的内容(内存块的值)

*p赋值*p='a'; 不会改变p所指的内存地址指针变量的值,只会改变所指的内存块的值 

接下来看看间接赋值的理解:

int *p=NULLint *p,p=NULL;//定义一个指针变量p,他的地址为0

int a=10;

p=&a;//a的内存地址赋给p

*p=20;//改变p所指的内存块的值,也就是改变了a的值

上面就是指针通过地址来间接修改变量的用法
     这仅仅是对指针的一个初步认识,指针有一级指针、二级指针、三级指针等,还有野指针,指针数组和数组指针等知识点。对于指针的学习,目前掌握的远远不够,但是要想有好的基本功底,就应该要去啃透它,加油!

文章的最后,本人有个小疑问,一旦定义了一个变量,系统就会自动给变量分配内存,那是不是每一个内存都含有两个元素:内存地址值和内存块的值?也不知表达的对不对?

 以上文字出于个人的学习笔记,如若有问题,欢迎提出!

                                                                ————总有一天,你将破蛹而出!

0 0