前言
因为之前我学的是信息与计算这个专业(计算机这个专业是大二时转的),所以一开始接触数据结构(大二开的)这门课程,感觉很吃力,不过后来发现也确实很难。
为了学习数据结构,去过图书馆借了相关书籍。一开始看的时候简直就是一头雾水,什么都不懂,连指针是什么也不知道,看了一两天就放弃了。想想还是得把基础捡起来,然来看了问同学建议的一些视频,大概看了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语言:我眼中的指针(教你彻底认识指针) 我眼中的指针 c语言:我眼中的指针(教你彻底认识指针)
要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的 类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: ...
彻底理解指针,指针数组和数组指针,指针函数和函数指针.doc
鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载鼠标指针下载Yangcong WolfYangcong WolfYangcong WolfYangcong WolfYangcong WolfYangcong ...
C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针C指针
指针 指针教程 指针练习指针 指针教程 指针练习
c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针c语言指针...
指针的介绍,重点,难点解析,教你如何认识指针。
void指针void指针void指针void指针void指针
我这不是我第一次写关于C指针的文章了,只是因为指针对于C来说太重要,而且随着自己编程经历越多,对指针的理解越多,因此有了本文。然而,想要全面理解指针,除了要对C语言有熟练的掌握外,还要有计算机硬件以及...
指针精通指针精通指针精通指针精通指针精通指针精通指针精通指针精通指针精通指针精通指针精通指针精通
谈谈C语言中“指针”的应用
程序编程中指针出错率往往极大,本文教你正确认识指针以及高效使用指针,实现安全高效编程。 特别提醒:由于之前以为指针经验总结这篇文章没有上传成功,故又重新传了一次。本文内容和我之前发布的指针经验总结完全...
我知道函数指针是指向函数的指针,指针函数还是指一个函数的返回值是一个指针,但下面 的几道题还是感觉很迷惑。各位能否讲的详细点呢? (1)float(**def)[10] def是什么? (2)double*(*gh)[10] gh是什么? (3)double...
彩色荧光鼠标指针鼠标指针
指针类型 11.1 指针 11.2 单链表 11.1 指针 11.2 单链表
易语言取类指针及方法指针源码,取类指针及方法指针,线程调用,取方法指针,方法1,方法2,lstrcpynA
指针的总结指针的总结指针的总结指针的总结指针的总结指针的总结指针的总结指针的总结指针的总结指针的总结
指针函数和函数指针变量指针 函数和函数指针变量
透明鼠标指针 透明鼠标指针透明鼠标指针透明鼠标指针透明鼠标指针透明鼠标指针透明鼠标指针