我对编程的看法(原创)

C++小游戏(原创) #include #include #include using namespace std; double shanghai[20]={0.6,1.1,2,3.16,5.5,7,10,20,50,100,146.23,254.13,312,403,601,1023}; double bosshealth[20]={2,3,4,5.9,8,14,19,32,73,157,200,403,801,1 阅读详情
虽然自己还在大三不过对招聘的公司关注的还是比较多的,最近看到了“网易互动2007校园巡回招聘 ”其中有一篇报道是这样的:现在大部分的学习都太过快餐式,注重应用,对于概念、原理的把握很缺。知道了可以如何做,更需要知道为什么需要这么做,知本,这才是网易互动的要求。 原文地址 http://job.youkuaiyun.com/n/20060511/90262.html
  可以说我从大一到大二的时候,c++语言,VB语言也都是快餐试的学习,只强让自己记住了一些语法,然后应用,知道了如何做,可就是不知道为什么需要这么去做,我这里拿些例子出来吧。(各方面都有,都是我学习上遇到的)
1。我在破解的时候经常讲过要将机器码74改成75,或者74改成EB来实现静态的破解,这点我相信记住的人不少,不过又有多少人明白其中的原理呢????要是当你明白了这些或许你会恍然大悟,je/jz(汇编指令 相等/等于0)的短转移机器码在计算机里的表示为74xx,jnz/jne(不等于0/不相等)机器码为75xx,74改成75也就是je改成JNE符合我们的逻辑,当你在修改机器码的时候你可能会不知道为什么要这么修改,这时候你可以去查查“转移指令的条件和机器码”表。
2。这里假设一个函数color(int red,int blue,int green)他们汇编代码是这样的:
在C中:
push green
push blue
push red
call color;
在pascal(Delphi继承的语言):
push red;
push blue;
push green;
call color;
奇怪的是为什么这二个汇编调用参数的顺序会不同呢,或许你在读到的时候你会定性的认为参数的调用可以无序的,其实各种语言在堆栈里传递参数要遵守一种调用约定,调用约定规定C中参数传递顺序从右到左,PASCAL中为左到右,现在你该明白为什么了吧。
3。C++中的虚函数,我想没多少人明白什么时候该用虚函数,什么时候不用,为什么要引入虚函数的概念呢??其实如果派生类在重新定义一个成员函数的时候就应该在基类中把此函数设为virtual
  4。这学期我们软件学院开的主要是C#课程,我在学的过程中也有不少的体会,这里也拿过来说说,或许对正在学C#的同学也有点帮助.
  相信大家很早以前就听过.net的出现吧,.net到底是什么呢??为什么微软要推出.net的??它到底有什么奇特之处呢??许多人其实也都没去追寻这些问题,只是学校让我们学习这门课程我们就学吧,记住里面的语法在加以引用下就OK了,就算学会了。其实.NET的出现解决了程序员以前很多的问题,比如说多语言开发环境、大型复杂系统的发布配置问题。
  刚开始学习C#的时候我一直有着这个困惑,看看这段代码吧。
class helloname
{
  ......
}
static void Main(string[] args)
{
  helloname hello=new helloname();}
这句话到底是什么意思呢??书上写的是实例化,我在写代码的时候有时候会把()忘了,结果就会出现编译错误。我是这么想的既然有()它应该是个函数吧,他声明了个类的对象又调用了个函数进行实例化,理解得不来。呵呵,自己受C++的影响,在C++中类的对象是这么声明的:helloname hello;就声明完了。在图书馆查了查书,后面知道了,helloname()是构造函数,受C++声明对象影响没想到它是个构造函数,C#中必须对对象进行实例化也就是调用构造函数进行对象赋初值。
有个有趣的程序:
using system
class   ployline
{
public ployline()
  {
    this.x=122; this.y=222; this.z=322;
 
  }
protected int x;protected int y;protected int z;
public void getline(int x,int y,int z)
{
x=this.x; y=this.y; z=this.z;
}
class test1
{
  public static void Main()
  {
  ployline line=new ployline();
  int x; int y; int z;
  line.getline(x,y,z);
Console.writeline("x={0},y={1},z={2}",x,y,z);
}
}
}
程序在执行的过程无法通过编译:引用了未赋初值的x,y,z,于是我把上面改了下int x=0;
int y=0; int z=0;
程序可以通过编译,可不是我要的答案122,222,322,而是0,0,0为什么会是这个结果呢??
我们分析在调用line.getline方法时,参数值x,y,z的值会被复制到该方法的局部堆栈中,该方法对这些变量的任何修改都不会传递给调用程序的变量。
在C++解决这类问题的方法是:调用程序将指针或引用传递给变量。在C#中解决的方法类似就是使用关键字"ref"对上面程序修改下
using system
class   ployline
{
public ployline()
  {
    this.x=122; this.y=222; this.z=322;
 
  }
protected int x;protected int y;protected int z;
public void getline(ref int x,ref int y,ref int z)
{
x=this.x; y=this.y; z=this.z;
}
class test1
{
  public static void Main()
  {
  ployline line=new ployline();
  int x=0; int y=0; int z=0;
  line.getline(ref x,ref y,ref z);我认为这个参数关键字个DELPHI中参数var很象
Console.writeline("x={0},y={1},z={2}",x,y,z);
}
}
} 结果为x=122,y=222,z=322
  你现在是不是明白了ref关键字的使用了???
5。同样在C#中定义属性你是不是也很不明白呢??? 你是否想过下面这些问题呢?
c#中属性定义方法:
class line
{...
get
{
return x;
}                          
set
{
x=value;
}...
}
我们在Main()函数中可以这么使用
line add=new line(); add.x=122; int x1=line.x;
怎么编译器会通过呢?value我们没定义过,怎么能使用???现在你如果去查看MISL代码(.net产生的一种类似汇编的中间代码,可以使用SDK工具查看),就会明白它其实调用了get_x函数。
其实很多高级语言我们都需要理解为什么那么去做,这样我们才可以遍出更好的软件出来,光靠快餐式学习,缺少对概念、原理的把握是不行的。
好了,就写到这了,有空我在多写帖子,现在时间自己感觉也挺紧的,哈哈,希望有学习C#的同学和我沟通,现在对C#兴趣很农,上面是我自己的看法,可能有些错误,大家可以指出讨论,谢谢!!!



 
百个原创51单片机C程序——经典编程与应用实例集 在准备开始一个51单片机的C语言编程实战项目时,首先要明确项目的目的和目标。项目选择应该既能够体现51单片机的特点,同时也要贴近实际应用场景,为学习者提供一个完整的开发流程。 阅读详情

相关推荐

HFSS实战(三)——过孔via TDR仿真

在上一讲中,主要是通过观察S参数确定via的优化是否达到目标。但S参数只能看到一个整体的结果,并不知道via真实的阻抗是多少?想要单独确定via的阻抗,最好还是通过TDR的仿真。

luohuo9844的博客 1万+

我对编程的理解

1.编程   使用一种计算机语言对处理事情的过程进行建模。 2.建模   将真实的物理世界进行抽象与简化。 3.误差:   我们优化程序的目的就是对模型进行优化,使模型输出的结果逼近真实世界。  ...

Jackchen 的博客 1937

在 Linux/Debian/Ubuntu 上使用 Brasero 刻录光盘

在 Ubuntu 系统中,Brasero 是一个非常方便的光盘刻录工具。无论是创建数据光盘、音频光盘还是刻录光盘镜像文件,Brasero 都能轻松胜任。本文将介绍如何在 Ubuntu 上安装和使用 Brasero 进行光盘刻录。

I AM COMING BACK... 3553

新生浅谈(一)对编程的认识

刚离开高中,步入大学,很多同学都开始接触电脑,有一部分人也想去编程。但是对于一个陌生的名词,很多人可能没有太多概念。今天就来简单说一下编程那点事。 如同修车要用钳子扳手,修电器要用螺丝刀电焊,编程就是我们解决问题的一个工具。他可以解决很多事情,当然也解决不了很多事情。每一类问题有更擅长的算法去解决,每一个领域有更适合的语言去解决,如同根据螺丝挑螺丝刀一样。任何人都可以学编程,只要你的逻辑清晰,就几乎没有解决不了的问题。 那学习编程需要什么呢?首先你要先选择一门最最开始的入门语言,目前的主流编程语言都可以,比

qq_45607874的博客 1286

实战分享:如何用本地替换和插桩调试搞定Kasada最新版x-kpsdk-cd环境检测

本文深入解析Kasada最新版x-kpsdk-cd环境检测机制,提供动态请求拦截、本地替换和函数插桩等实战调试策略。通过Proxy保护破解、关键函数断点调试和环境检测对抗方案,帮助逆向工程师有效应对从280位扩展到294位的加密数组挑战,实现高效补环境调试。

weixin_29251567的博客 572

从0到全栈:C#/.NET/.NET Core终极学习路线——2025年开发者必修的12个阶段与30个实战项目

【代码】从0到全栈:C#/.NET/.NET Core终极学习路线——2024年开发者必修的12个阶段与30个实战项目。

墨夶的博客 2042

我对编程的看法

大家好,我是一名软件工程专业的大学生,很高兴认识大家,同时这也是我的第一篇博客。 1.首先就是我编程的目标 说实话学习这个专业最主要就是为了将来有一个比较高的收入这是对我来说目前是最根本的目的(说白了就是为了挣大钱????),其次我认为编程可以帮助我们解决一些生活中的一些实际问题,为我们提供我们日常中所需的 2.我将如何去学习编程 我认为学习编程最重要的就是要动手!动手!动手!"纸上得来终觉浅,绝知此事要躬行"很多时候你知道理论是不行的,更多的是要进行实践,今天学会一种东西,就要动手去电脑上敲一敲,这样提高

cls的博客 2841

嵌入式代码审计中常见的漏洞(四)

经过漫长时间的迭代更新,内容从一开始的碎片化网罗搜集,到排版与整合划分,再到学习与实践验证,最后摒弃初始,用自己的语言与实践结论通俗的将它展现出来。强化知识技能的同时也为读者带来更好的阅读体验。 本篇介绍了以下代码安全问题: 编号 漏洞 1 敏感信息硬编码 2 未初始化安全 3 越界访问 4 迭代器失效 5 迭代器尾部解引用

武天旭的博客 3318

对编程的认识

该文是整个Java学习的第一篇,主要是树立对编程的认识以及Java的一些基本概念,接下来我将按照Java SE→Java web→框架→中间件&服务框架这样一个顺序学习Java。 首先,我之前学过什么?计算机组成原理、操作系统、网络、数据库、数据结构、C语言、C++、人工智能。虽然只是学了皮毛,至少对于计算机这门学科是有一个基本认识的: 通过组成原理,我们知道: ①计算机的体系结构是由软件(软件是分层的)和硬件(硬件是由CPU(控制器和运算器)、内存以及硬盘、网卡、鼠标、键盘、显示器等外设(后

qq_55770813的博客 4425

点云语义分割:使用Cylinder3D训练SemanticKITTI数据集

将该路径修改到config/semanticktti.yaml文件中的data_path节点下。下载semanticKITTI数据集的点云数据和标签,解压到一起。系统:Ubuntu18。

zhaoguanhua的博客 2602

SAP BSIS:总账未清项表(Open Items)总账未清项 包含哪些业务 请给以举例说明

SAP总账未清项是指需要未来核销的会计行项目,仅适用于勾选"未清项管理"的总账科目。典型业务场景包括:供应商预付款(借方未清项)、员工备用金(借方未清项)、客户预收款(贷方未清项)和保险理赔(借方未清项)。系统通过表BSIS/BSAS跟踪未清项,支持明细追踪和账实核对。核心价值在于提供总账级别的明细管理能力,确保往来款项完整清账,简化对账流程,满足特殊业务管理需求。可通过FBL3N事务码查询和管理所有总账未清项。

金牌架构师 724

关于编程的建议

1.多练习,代码是手艺 2.初级工程师会记忆很多很多非常精确绝不能错的细节,并以记忆从不出错为傲。中级工程师知道很多指导性极强的设计原则/思想方法/推理规则,借助这些规则他就能推理出无穷无尽的细节——你觉得他是随便说说,但他的话却总是比初级工程师背下来东西更精确、更贴合实际。高级工程师只知道很少几条一般性原则,这些原则模棱两可、让人摸不着头脑;但他却总可以随心所欲的选择要不要用这些原则、用上几条、各占几分。中级工程师记忆的原则/方法/规则、初级工程师记忆的海量条条框框,全都是高级工程师借助这些模糊的一般性原

qq_57310266的博客 392

【华为OD机试真题 Python语言】371、增强的strstr | 机试真题+思路参考+代码解析(E卷复用)

>C语言有一个库函数: char *strstr(const char *haystack,const char *needle) ,实现在字符串haystack中查找第一 次出现字符串needle的位置,如果未找到则返回null >  现要求实现一个strstr的增强函数,可以使用带可选段的字符串来模糊查询,与strstr一样返回首次查找到的字符串位置 >  可选段使用"[]"标识,表示该位置是可选段中任意一个字符即可满足匹配条件,比如"a[bc]"表示可以匹配"ab"或"ac" >&

KJ.JK 2607

网站建设思考之好六网的原创数据成长之路[图]

最近也在学着写博客,因为我开始学习编程等相关知识了,因此比较关注网站建设这一块,也就对一些优秀的新网站有些思考了,这段时间在网站看帖子,突然发现了一个增长很快的新站,它就是好六网,这个网站是关于王者荣耀游戏相关内容的,确实比较厉害,经过观察发现,这个站建立了大概一年了,但流量预计与达到了1IP左右,这确实已经非常快了,因为是个新站嘛,这是我所达不到的高度。那么怎样才能建立起这种好的站点呢?话说百度...

minemi的博客 266

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Python GUI学习感想

最近在鼓捣Python的GUI编程,试用了pygame,Tkinter,最后选择了PyQT5,遇到了一些问题,进行了一些对比,下面谈谈自己的感悟: 1.学习pygame和Tkinterr让我想起了05年使用java开发GUI界面,多么相似,当年是享受,现在是受罪。享受是当年的界面是用代码写出来的,对于程序的理解非常深,做出一个界面自己的成就感棒极了,跟现在的编程相比就感觉自己是在做底层,有骄傲感。受罪是因为自从使用了微软的.net后所有界面开发都是拖拽简单设计了,非常方便,现在都向着简单快速开发的方向走,

panfengweiwei的博客 1万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

关于博客的原创和转载的一点儿看法

关于博客的原创和转载的一点儿看法   今天下午编码休息的时间,同事问我使用viewWithTag获取到相应subview的问题,于是我就把我很早前写的一片博客 "viewWithTag获取subview规则详解"的地址发给他了。当时也不是很忙于是产生了一个上google搜素一下我这篇文章的想法,搜索的结果开始让我觉得蛮高兴的,因为看到了很多关于我这篇文章的连接,点进去看了之后感觉还不错,例如这个...

weixin_33972649的博客 295

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

第100篇原创。。。

     在今天,睡觉前,要完成优快云上第100篇我的原创文章,虽然很多不是技术文章,但却是原创,嘻嘻,有什么不一样,对不?     不知道这样算不算做弊,这样完成第100篇,好像有点空洞啊。不过,不管了,我的地盘,我作主。。。。     来做点什么呢? 贴点图吧,我的最爱,贴点珍藏来共享。。。。                    困了,不想贴了,今天,第100篇原创就这样吧。。

meteorWJ's Home—Floating clound 807

优快云新写博客默认选择文章类型(原创)和博客分类(编程语言)

首先安装猴油插件(墙问题自行解决) https://chrome.google.com/webstore/search/tampermonkey https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo   然后安装脚本 https://greasyfork.org/zh...

c332030 1432

原创:Qt在Windows下的三种编程环境搭建

尊重作者,支持原创,如需转载,请附上原地址:http://blog.youkuaiyun.com/libaineu2004/article/details/17363165 从QT官网可以得知其支持的平台、编译器和调试器的信息如图所示: http://qt-project.org/doc/qtcreator-3.0/creator-debugger-engines.html (Home | D......

$firecat利白的代码足迹$ 14万+

写点啥呢,csdn只要原创,这啥算法

写啥点呢,csdn只要原创,这啥算法 写啥点呢,csdn只要原创,这啥算法 写啥点呢,csdn只要原创,这啥算法 写啥点呢,csdn只要原创,这啥算法 写啥点呢,csdn只要原创,这啥算法 写啥点呢,csdn只要原创,这啥算法 写啥点呢,csdn只要原创,这啥算法 写啥点呢,csdn只要原创,这啥算法 写啥点呢,csdn只要原创,这啥算法 ...

计算机毕业论文源码,学生个人网页制作html源码。贴近用户做网络推广和互联网优化。 5776

【01】原创音乐人采用cubase-卓伊凡-完整的原创音乐全流程含作曲作词混音编曲合集10章完整从0到1制作原创音乐过程

【01】原创音乐人采用cubase-卓伊凡-完整的原创音乐全流程含作曲作词混音编曲合集10章完整从0到1制作原创音乐过程

一颗优雅草科技-央千澈的优快云博客~只想无穷无尽的学习~作息早8-晚8 1582

原创文章之快速搜索

原文首发于微信公众号「3D视觉工坊」:原创文章目录。 今天简单将原创文章已汇总如下,点击文章名称即可「快速检索」。如遇写得不到位的地方,还请小伙伴们多多指正,小凡不甚感激。也希望自己在接下来的时间里,坚持原创,输出更多优质内容与大家分享,在学术的道路上任重道远~ 一 VSLAM VSLAM|回环检测之词袋字典如何生成? 那些珍贵的「视觉SLAM」课程资料总结 二...

3D视觉工坊 714

2020年国内优秀原创IT技术书都在这了

2020年引进版的专业技术书大家都有了解了,那么你知道上一年有哪些优秀的原创编程书吗?小编来给您汇总一下。 1、MySQL是怎样运行的 从根儿上理解MySQL 豆瓣评份9.3 本书采用诙谐幽默的表达方式,对MySQL的底层运行原理进行了介绍,内容涵盖了使用MySQL的同学在求职面试和工作中常见的一些核心概念。 总计22 章,划分为4个部分。第1部分介绍了MySQL入门的一些知识,比如MySQL的服务器程序和客户端程序有哪些、MySQL的启动选项和系统变量,以及使用的字符集等。第2..

人邮异步社区 5349

推荐一个硬核嵌入式的原创公众号

一个纯技术公众号......公众号【技术让梦想更伟大】力争原创,内容涵盖嵌入式Linux、C/C++/Qt、算法、数据结构、职场感悟等方向。这里有学习路线、经验心得、面试宝典、源码解析、...

张巧龙的博客 433
上一篇: VC常用开发技巧
下一篇: Visual C#常用函数和方法集汇总
sshack
博客等级 码龄20年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值