C/C++的指针以及对编程的学习感悟

博主是个22岁刚毕业的应届生,还好在学校所幸自己努力,通过自学弥补了小部分不是计算机专业出生的缺陷。曾别人帮助我,我觉得应该写博客,乐于分享。

博主去年11月开始实习,因为自学,基础差的要命,有多差?我只能告诉你,连C++语法都没过关。类模版是什么都不知道,以至于别人问我“你知道类模版吗?(说说你对类模版的理解)”.哦,类模版啊,Template嘛,面试官开始微笑,我现在想想,估计那面试官只差没当场笑倒在地上了。所幸的是,后来有个经理看着我很努力,很好学,学习态度好。肯收留我,拿到的薪水也是一个月吃饭租房用光的薪水。直到现在,我还很感谢他,他教我的不只是编程,不单单的只是如果工作,而是做人。先学做人,在学做事。人做好了,其实很多事情都会慢慢的做好。这个道理相信很多人都会懂得。好了,开始进入正题吧。

之前一年都混迹CSDN,其实说白了,CSDN的问题在工作中很少有用上的(CSDN的博客很好,很吸引人),基本上很多的语法问题,都是学生在问题,工作若干年的热心人事在解释,当然,不泛很多高深问题。在那也学到不少,当然现在也不在去CSDN了,原因个人想法吧(偶尔还会去灌灌水,补补基础,学习下各位老师的解释,理解他们的思想)。避险,所以不继续说这个。我只能说,如果你想看看自己的基础了,去CSDN看看会有很多的弥补,牵起你的记忆,这好似一个记忆链,把你不知道的全部连根拔起.

很多人说C/C++太恶心,尤其是C++,门槛过高,其实博主认为只要掌握到一点,短时间自然会茅塞顿开。理解指针即可,指针的本质是什么?“指针的本质是->地址”指针就是抛出一个地址,谁爱用谁去用,用不用得了就不知道了,其实不止是指针,编程其实都是地址,我们都是在操作内存而已。与其在“万物皆对象”说,不如说“万物皆内存更合适”,当然这是博主的一己看法,不赞成的请见谅,毕竟博主还是实习了一年(这一年也就打打酱油吧,什么都看,乱七八糟的,也不算努力,所幸有人教,认识几个技术好点的,脸皮厚粘着问才会有点小小的感悟--这里感谢下他们,分别是上海勤和互联网的刘老师,360某位组长,金山的某个同届朋友雷同学(这个人有天赋,很羡慕他,也很努力,也聪明,据说他还有个同学,大一就去了金山吧,佼佼者,还有北京某公司网名“孤星赶月”,以及云南某重点大学的烟酒生,还有第一家公司的三位同事以及经理)的菜鸟,编程这东西,弄个一年才算刚入门吧。

打个比方 Class  Test{

fun();

member;

}

int main()

{

Test  t; ---->t也只不过是一个地址,不要总是想着书上的,声明类X的一个对象,对象对象?到底什么是对象,什么又是面向对象呢?书上只说了“封装继承多态?书上是这么说的”,我想很多在校的学生也不会知道把?大多数老师也不会告诉你什么是对象吧?说白了也就是一块内存,存取着你自定义的数据,这块你自定义的数据是由常见类型组合而来的,常见类型又是由语言本身定义的,语言本身更是由开发者们从低级代码通过编译器做出来的吧?这也是面向对象的最最本质的答案?。。。细分细分在细分。。

第一个经理教我的,同事也是面试的问题,要我把 地球上的东西搬运到火星,细分细分再不断细分。    打个比方:如下

std::vector<int> m_vector; ----->m_vector的对象是?是这个vector里面的元素,里面元素的对象呢? 我想说是地址,不知道合适吗?个人理解,各位不妨说说自己的看法。

}

那指针不就更显而易见了吗?

个人认为,编程这东西,《操作系统》《编译原理》《微机原理》是必不可少的,虽然在短期看来,他的作用不大,算不上什么,但是长而久之带来的帮助是不同凡响的.更重要的是数学,数学带来的是一种思维,可能你会觉得用不上什么算法,但是博主说说自己的经理吧,一个数学学位的同事,关系比较好,他现在在华为吧,他编程量少,但是真的很多东西就算你堆了一堆代码,他能很快用快速简洁的思维想出来,然后马上给你做出来,而且面试各种算法,与人交谈都是那么的轻松,自在。HR更会赏识这样的人。

另外,给在学校走在编程路上的同学一点建议,多交流,我们以后进入一家公司来说,最重要的不仅仅是学习如何编程,如何高效编程,不蛮你们说,我见过几个公司的代码,那都是狗屎一样的代码,没注释,写得莫名奇妙。例如: bool _bool = IsError()   if ( !_bool); 这样很多时候是没必要的 直接这样 if(!IsError()) 是更清晰的,可读性更加强吧?这还只是冰山一角。写代码大脑要有个思维流程跟着走,逻辑性一定要强,不要突然钻出一行代码,把逻辑断了,如果非得这样要么是你涉及方案有不合适,要么就是其他原因了,非得出现写个注释,以后在来改进改进。

除了学习如何编程外,与之并肩学习的是你们老大的编程思想,你同事的编程思想,从生活方式,从思维方式,从工作方式等等方面去学习,这才是一个团队存在的原因,团队需要互相弥补,增强不足,进入一家公司不仅仅是做事拿钱,技术好了跳槽,那么换来的必然是个“悲剧”,这样学习无论对你,还是对你的后代帮助都是不可思量的。

最后还酱油下,很多人也会说,自己不适合编程,学完后压根没思路,不知道怎么开始。不知道就照着代码例子抄,先运行他的看看,什么效果,然后看每一行代码,抄一遍,自己心里过一遍,抄完思考完毕后自己在有自己的思路做一个。这样就下来了,从小学到中学到高中最后大学,甚是读书读下去,都不是这样吗?先看别人的思想,在做自己的。中华民族的文化思想是不可估量的。很多东西都是一生二,二生三从无到有的。不可能突然锐变的。

好了,一点唧唧歪歪i啊,其实博主的编码也如同这博客,没有一点点逻辑思维,东一句西一句,希望与大家一起学习。。

时间: 2024-10-16 12:14:41

C/C++的指针以及对编程的学习感悟的相关文章

上海华为的一道关于指针方面的编程题(C/C++)

int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标. 尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路 注:我的方法的复杂度为O(n),大家如果有其它方法希望可以交流一下. /* author: jiangxin Blog: http://blog.csdn.net/jiangxinnju */ #include <ios

《灰帽Python-黑客和逆向工程师的Python编程》学习记录

ctypes是Python语言的一个外部库,提供和C语言兼容的数据类型,可以很方便的调用C DLL中的函数. 操作环境:CentOS6.5 Python版本:2.66 ctypes是强大的,强大到本书以后介绍的几乎所有库都要基于此.使用它我们就能够调用动态链接库中函数,同时创建各种复杂的C数据类型和底层操作函数.毫无疑问,ctypes就是本书的基础. 第一章 搭建开发环境 1.3.2 使用动态链接库 from ctypes import * libc = CDLL("libc.so.6"

pthread多线程编程的学习小结

pthread多线程编程的学习小结 程序员必上的开发者服务平台 —— DevStore pthread多线程编程整理 1 Introduction 不用介绍了吧… 2 Thread Concepts 1.     Thread由下面部分组成: a.     Thread ID b.     Stack c.     Policy d.     Signal mask e.     Errno f.      Thread-Specific Data 3 Thread Identification

linux 网络编程需要学习的内容

Linux C++培训发 课程模块 Linux C++全科班课程由以下模块组成: Module01 - Linux系统基础 由于本系列课程基于Linux(或UNIX),熟悉Linux操作系统是必要的前提. 该模块的课程包含以下方面的内容: 常用Unix/Linux命令熟悉文件管理.文本处理.进程管理.网络.系统管理等各个方面大约100个常用的命令. 深入了解bash了解Linux默认shell: bash 的语法.命令执行.I/O重定向.任务控制等. 正则表达式基础由于UNIX/Linux中很多

linux应用编程基础学习笔记

********************************************************            --文件I/O-- 文件:文本文件:存储量大,速度慢,便于字符操作二进制文件:存储量小,速度快,便于存放中间结果 普通文件:设备文件: ---C标准函数---:Buffered I/O,高级文件系统,在用户空间开辟缓冲区,流操作(stream)#include<stdio.h> typedef struct{ int _fd;      //文件号 int _

(转)【D3D11游戏编程】学习笔记二十三:Cube Mapping进阶之动态环境图

(注:[D3D11游戏编程]学习笔记系列由CSDN作者BonChoix所写,转载请注明出处:http://blog.csdn.net/BonChoix,谢谢~) 在前面两篇介绍Cube Mapping的文章中,我们所使用到的Cube Map都是事先制作好的,这样的一个好处就是运行时效率很高,适合于大多数情形.但如果对于即时动态变化的场景来说,依靠静态图来实现反射效果就不再适用了.因为在不同时刻,一个物体周围的场景是不断变化的,想要把这些变化在物表的反射中体现出来,就需要一张动态的环境图. 1.C

程序员编程技术学习笔记——字符串包含

程序员编程技术学习笔记--字符串包含 1.题目描述 给定两个分别由字母组成的字符串A和字符串B,字符串B的长度比字符串A短.请问,如何最快地判断字符串B中所有字母是否都在字符串A里?为了简单起见,我们规定输入的字符串只包含大写英文字母,请实现函数boolStringContains(string &A, string &B) 比如,如果是下面两个字符串: String 1:ABCD String 2:BAD 答案是true,即String2里的字母在String1里也都有,或者说Strin

Linux网络编程&amp;内核学习

c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: (美)Greg Perry    [作译者介绍] 译者: 谢晓钢 刘艳娟 丛书名: 图灵程序设计丛书 C/C++系列 出版社:人民邮电出版社 ISBN:9787115216359上架时间:2009-12-10出版日期:2010 年1月开本:16开页码:308 说明:这本是入门最好的,最简单,最好懂 2.<

Liunx+C编程一站式学习

Liunx+C编程一站式学习这本书有什么特点?面向什么样的读者?这本书最初是为某培训班的嵌入式系统Linux工程师就业班课程量身定做的教材之一.该课程是为期四个月的全日制职业培训,要求学员毕业时具备非常Solid的C编程能力,能熟练地使用Linux系统,同时对计算机体系结构与指令集.操作系统原理和设备驱动程序都有较深入的了解.然而学员入学时的水平是非常初级而且参差不齐的:学历有专科.本科也有研究生,专业有和计算机相关的也有很不相关的(例如会计专业),以前从事的职业有和技术相关的也有完全不相关的(