初阶指针——谈谈我对指针学习的认识
(笔者学习C语言的时间不长,如果发现您在阅读时发现笔者在表述或认知方面存在问题,欢迎您通过评论的方式告知笔者,笔者感激不尽。笔者学习C语言主要参照的是郝斌老师的C语言自学系列视频,如果您对C语言感兴趣,且没有编程基础,也建议您去B站搜索郝斌C语言进行学习。)
下面笔者就自己的学习和思考谈一谈对指针浅薄的认识。
首先回答一个问题,指针是什么?
指针就是地址,我们通常所说的指针其实是指针变量。指针变量是一类能用于存放变量地址的变量,并且指针变量指向以其内部存储的内容为地址的变量。
(好像有点绕,换句话说,指针变量也是变量,既然是变量就能存储数据,只不过指针变量只能存储特殊的数据——内存单元的标识符,也就是我们说的地址。既然指针变量能存储某个变量的地址,那我们就可以通过指针变量里面存储的该变量的地址找到该变量,所以我们就说指针指向该变量。)
知道了指针是什么,接下来回答指针怎么用?(此处举例只是简单介绍指针用法)
首先定义指针变量 int * p;(*号和前面的int连在一起表示指针型数据类型)
然后赋值p=&i;(此处的变量i笔者默认已经定义了)
思考一个问题,为什么是p=&i;而不是*p=&i;
因为p才是指针型变量的变量名,而*p其实是整型(*在此处可以认为是取地址的逆运算,*p等价于其所指向的变量)
我们为什么要用指针?
1.指针可以返回两个以上的数据;
2.指针可以快速传输数据;
(笔者自认为这一块不能表达清楚)
利用指针动态分配内存的问题?
使用库函数malloc:(*p=(int*)malloc(sizeof(int)))
主要malloc函数是开辟一块空间分配给我们使用,其返回值是void*类型的,所以需要强制类型转换。(C语言函数的运行是压栈,函数结束时出栈,但动态内存是以堆排序的开辟的,不会因为函数结束而自动释放,所以需要我们手动释放)
本文受限于笔者的认知和学识,但笔者还是希望能给读完本文的您带来一点收获。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)