谈谈我对指针的认识
2013-07-16 22:12
218 查看
前言
因为之前我学的是信息与计算这个专业(计算机这个专业是大二时转的),所以一开始接触数据结构(大二开的)这门课程,感觉很吃力,不过后来发现也确实很难。
为了学习数据结构,去过图书馆借了相关书籍。一开始看的时候简直就是一头雾水,什么都不懂,连指针是什么也不知道,看了一两天就放弃了。想想还是得把基础捡起来,然来看了问同学建议的一些视频,大概看了1个月左右,决定把再来看数据结构,后来发现还是看不懂,加上那时又临近考试,所以就没去再看了。到了大二下学期,慢慢接触java这门语言,感觉java比c++好学,而且java封装性特别好,很多方法和数据结构(如:集合框架)都帮你封装好了,只要会调用就行,那时感觉数据结构离我原来越越远了,因为基本上那时学java几乎没有用到数据结构,而且到了大三,包括学jsp动态网页技术,mvc模式,ssh框架等等,基本上没有自己去写算法,只是按部就班的执行自己写的sql语句或hql封装语句来对bean实体类对象或集合进行增删改查。大三下学期,我觉得很幸运的是能帮老师做系统,让我慢慢了解了ssh分层结构,尽管后来自身感觉那个系统本身就不怎么样,几个人一起分工做,但是这样无形中还是会增加代码冗余度(有些功能一样的可以本来是直接调用相同接口的),后来那个系统就像摆积木一样的完成了。虽然那个系统并不怎么好,而且还是二次开发,但是对于我这个初学者来说,还是学到了一点东西。
项目心得:在开发过程中,很少用到什么数据结构,你要做的主要是了解需求、建表、实现业务逻辑等,至少刚开始是这样的。
考虑到以后这个行业对java开发者的要求可能会更高,而且数据结构又是软件中的核心课程,所以想借这个暑假把数据结构捡起来。
正文
数据结构主要用来解决数据存储问题,它主要研究如何把现实中大量而复杂的问题以特定的数据类型(个体)和特定的存储结构(个体之间的联系)保存到内存中。而在此基础上为实现某个功能(如数据的查找,删除,排序等)进行的相应操作(解题的方法和步骤)称为算法。下面以C语言为例,指针可谓是C语言的灵魂,同时也是学习数据结构的基础。以前学C++的时候一直很苦恼,不知道什么是指针,更不用说怎么去使用指针了,而且数据结构里面的指针可以说是随处可见,所以要学数据结构之前先了解指针非常重要。指针是什么?指针其实就是地址,而地址是内存单元的编号(不能重复),所以指针本质其实是一个(操作受限的)非负整数。它的范围是0~4G-1。
举例说明1(如何定义指针):
int *p; //这里p是一个指针变量,int *表示p变量只能存储int 类型变量的地址.
int i=1;//定义整型变量i,并赋初值1
p=&i;//p保存i的地址,此时p指向i变量的地址,修改p或i不会影响另一个变量的值。
举例说明2(如何跨函数修改局部变量的值):
举例说明3(指针在数组中的使用)--数组存放元素的地址是连续的:
注意:
1、因为a[3]=*(a+3),所以a[3]就是3[a],且指针索引速度比下标快;
2、所有的指针变量只占4个字节(因为地址总线是占32位的),通常用第一个字节的地址表示整个变量的地址;
3、无论什么类型的变量,只要修改它的地址,就可以修改它的值,且一个字节对应一个地址。
结束语
若文中有关对指针的认识有误或你要有更深的见解,还望指点
,今天就写到这,明天待续~
有问题可以相互交流和学习,QQ:2413698298
因为之前我学的是信息与计算这个专业(计算机这个专业是大二时转的),所以一开始接触数据结构(大二开的)这门课程,感觉很吃力,不过后来发现也确实很难。
为了学习数据结构,去过图书馆借了相关书籍。一开始看的时候简直就是一头雾水,什么都不懂,连指针是什么也不知道,看了一两天就放弃了。想想还是得把基础捡起来,然来看了问同学建议的一些视频,大概看了1个月左右,决定把再来看数据结构,后来发现还是看不懂,加上那时又临近考试,所以就没去再看了。到了大二下学期,慢慢接触java这门语言,感觉java比c++好学,而且java封装性特别好,很多方法和数据结构(如:集合框架)都帮你封装好了,只要会调用就行,那时感觉数据结构离我原来越越远了,因为基本上那时学java几乎没有用到数据结构,而且到了大三,包括学jsp动态网页技术,mvc模式,ssh框架等等,基本上没有自己去写算法,只是按部就班的执行自己写的sql语句或hql封装语句来对bean实体类对象或集合进行增删改查。大三下学期,我觉得很幸运的是能帮老师做系统,让我慢慢了解了ssh分层结构,尽管后来自身感觉那个系统本身就不怎么样,几个人一起分工做,但是这样无形中还是会增加代码冗余度(有些功能一样的可以本来是直接调用相同接口的),后来那个系统就像摆积木一样的完成了。虽然那个系统并不怎么好,而且还是二次开发,但是对于我这个初学者来说,还是学到了一点东西。
项目心得:在开发过程中,很少用到什么数据结构,你要做的主要是了解需求、建表、实现业务逻辑等,至少刚开始是这样的。
考虑到以后这个行业对java开发者的要求可能会更高,而且数据结构又是软件中的核心课程,所以想借这个暑假把数据结构捡起来。
正文
数据结构主要用来解决数据存储问题,它主要研究如何把现实中大量而复杂的问题以特定的数据类型(个体)和特定的存储结构(个体之间的联系)保存到内存中。而在此基础上为实现某个功能(如数据的查找,删除,排序等)进行的相应操作(解题的方法和步骤)称为算法。下面以C语言为例,指针可谓是C语言的灵魂,同时也是学习数据结构的基础。以前学C++的时候一直很苦恼,不知道什么是指针,更不用说怎么去使用指针了,而且数据结构里面的指针可以说是随处可见,所以要学数据结构之前先了解指针非常重要。指针是什么?指针其实就是地址,而地址是内存单元的编号(不能重复),所以指针本质其实是一个(操作受限的)非负整数。它的范围是0~4G-1。
举例说明1(如何定义指针):
int *p; //这里p是一个指针变量,int *表示p变量只能存储int 类型变量的地址.
int i=1;//定义整型变量i,并赋初值1
p=&i;//p保存i的地址,此时p指向i变量的地址,修改p或i不会影响另一个变量的值。
举例说明2(如何跨函数修改局部变量的值):
#include<stdio.h> void f(int *p) //定义了一个形参,该形参的名字叫p,它的类型是int * { *p=100; } int main() { int i=9; f(&i); //将i的地址传给p指针,此时p指向i变量的地址,*p和i变量等价 printf("i=%d\n",i); return 0; } ----运行结果:i=100
举例说明3(指针在数组中的使用)--数组存放元素的地址是连续的:
void Show_Array(int *p,int len) { p[0]=-1; printf("%p",p); } 在main()函数(也叫入口函数)中: int a[5]={1,2,3,4,5};//这里的数组变量名a等价于&a[0],&a[0]本身就是int *类型,a[0]就等价于*a Show_Array(a,5);//原理:p[i]=*(p+i)=*(a+i)=a[i]
注意:
1、因为a[3]=*(a+3),所以a[3]就是3[a],且指针索引速度比下标快;
2、所有的指针变量只占4个字节(因为地址总线是占32位的),通常用第一个字节的地址表示整个变量的地址;
3、无论什么类型的变量,只要修改它的地址,就可以修改它的值,且一个字节对应一个地址。
结束语
若文中有关对指针的认识有误或你要有更深的见解,还望指点
,今天就写到这,明天待续~
有问题可以相互交流和学习,QQ:2413698298
相关文章推荐
- 谈谈我对指针的认识
- 对C++中指针和引用的认识
- 谈谈我对资本主义和社会主义的一点认识
- 谈谈J2SE中的序列化之一个感性的认识
- 数组、字符串、指针的认识
- 从头认识C—指针
- 谈谈你对java中的Native关键字的认识!
- 谈谈你对面向对象编程的认识
- [转]对于C语言中指针和数组的认识和看法
- 谈谈数组和指针组合时,表示什么样的变量
- Delphi的指针的认识
- (funciton(){})() 的意义 =====JS函数和对象的意义 ========深入认识JavaScript中的this指针
- 如果面试官让你谈谈你对http的认识,你会怎么回答?
- 黑马程序员-指针的初步认识
- Gotchas 31-对目标类型为指涉物为常量的指针类型的类型转换的认识误区
- c++中函数参数传递(值传递、指针传递,引用传递)进一步认识
- 谈谈C语言指针那些陈年旧事
- 让我们来谈谈对Linux的认识,值得每一位运维人员深读
- 谈谈对mvc的认识
- 关于“指针的指针”的认识(值传递、指针传递区分)