ELF(Executable and Linking Format)文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,ELF是一种对象文件的格式,用于定义不同类型的对象文件(Object files)的内容是什么.以及都以怎样的格式去存放这些内容.它有三种不同的类型: 1.  可重定位的目标文件(Relocatable) 这是由汇编器汇编生成的 .o 文件.后面的链接器把一个或多个可重定位的目标文件作为输入,经链接处理后,生成一个可执行的对象文件 (Executable fi…
为了更加深入理解C语言的本质,我们需要学习一些汇编相关的知识.作为最基本的编程语言之一,汇编语言虽然应用的范围不算很广,但是非常重要.因为它能够完成许多其它语言所无法完成的功能.就拿 Linux 内核来讲,虽然绝大部分代码是用 C 语言编写的,但仍然不可避免地在某些关键地方使用了汇编代码,其中主要是在 Linux 的启动部分.由于这部分代码与硬件的关系非常密切,即使是 C 语言也会有些力不从心,而汇编语言则能够很好扬长避短,最大限度地发挥硬件的性能. 大多数情况下我们不需要使用汇编语言,因为即便…
C语言的本质(15)--C语言的函数接口 函数的调用者和其实现者之间存在一个协议,在调用函数之前,调用者要为实现者提供某些条件,在函数返回时,实现者完成调用者需要的功能. 函数接口通过函数名,参数和返回值来描述这个协议,只要函数名和参数名命名合理,参数和返回值的类型定义的准确,调用者仅仅通过函数接口就能知道函数的用法.当函数接口不能表达函数的全部语义时,文档就起了重要的补充作用,函数文档的写法我们可以参照Linux下的Man Page或MSDN. 下面通过分析C标准库函数来说明函数接口: 在Li…
指针,大概是C语言中最难理解的概念之一了.指针这个东西是C语言中的一个基本概念,C99中对于指针的定义是: 1. 指针的类型是derived from其它类型,也就是说指针的类型是由它指向的类型决定的: 2. 指针是一种reference类型,即引用类型: 指针这个词出现在高级语言程序设计中,在汇编中,就没有指针这个概念,有的只是地址.计算机的每一个内存单元都是编址的,对内存的访问都是通过地址进行的.高级语言把这些低级的硬件细节隐藏起来,程序处理的数据都存在数据对象里,数据对象在能用其间有特定的…
C语言的本质(7)--C语言运算符大全 C语言的结合方向 C语言中各运算符的结合性分为两种,即左结合性(自左至右)和右结合性(自右至左).例如算术运算符的结合性是自左至右,即先左后右.如有表达式 x-y+z则 y 应先与"-"号结合,执行 x-y 运算,然后再执行+z 的运算.这种自左至右的结合方向就称为"左结合性".而自右至左的结合方向称为"右结合性".  最典型的右结合性运算符是赋值运算符.如 x=y=z,由于"="的右结…
C语言的本质(4)--浮点数的本质与运算 C语言规定了3种浮点数,float型.double型和long double型,其中float型占4个字节,double型占8个字节,longdouble型长度要大于等于double型,本文档将以float型为例进行介绍,double型和long double型只是比float型位数长,原理都是一样的. float型可以表示的范围是-3.402823466e38~3.402823466e38,而作为同为4个字节的定点数却只能表示-2147483648~2…
C语言的本质(3)--整数的本质与运算 计算机存储的最小单位是字节(Byte),一个字节通常是8个bit.C语言规定char型占一个字节的存储空间.如果这8个bit按无符号整数来解释,则取值范围是0~255,如果按有符号整数来解释,则取值范围是-128~127.C语言规定了signed和unsigned两个关键字,unsigned char型表示无符号数,signed char型表示有符号数. 对于char类型,编译器可以定义char型是无符号的,也可以定义char型是有符号的,在该编译器所对应…
没学指针就是没学C语言! 指针是C语言的精华,也是C语言的难点. 所谓指针,也就是内存的地址,所谓指针变量,也就是保存了内存地址的变量.不过人们往往不会区分两者的概念,而是混淆在一起使用. =====指针的概念======= 计算机中的所有数据都必须放在内存中,不同类型的数据占用的字节数不一样,例如int占用4个字节,char 占用1个字节. 我们将内存中字节的编号称为地址或指针. 一切都是地址 C 语言用变量来存储数据,用函数来定义一段可以重复使用的代码,他们最终都要放到内存中才能供CPU使用…
12天学好C语言--记录我的C语言学习之路 Day 12: 进入最后一天的学习,用这样一个程序来综合考量指针和字符串的关系,写完这个程序,你对字符串和指针的理解应该就不错了. //输入一个字符串,内有数字和非数字字符,如:A123x456 17234?532tab32622,然后将,123,456,17234,532,32622这些被非数字字符分割开的数字找出来,输出这些数. //此程序的关键点在于遇到需要输出的字符就记录下来,然后判断他的下一个字符是不是有效字符,有效则不做判定继续执行有效字符…
12天学好C语言--记录我的C语言学习之路 Day 10: 接着昨天的指针部分学习,有这么一个题目: //还是四个学生,四门成绩,只要有学生一门功课没及格就输出这个学生的所有成绩 /*//program 10.1 #include "stdio.h" int main() {     void search(float (*p)[4],int n);     float a[4][4]={{80,70,60,59},{90,75,85,55},{70,90,80,75},{65,95,…
12天学好C语言--记录我的C语言学习之路 Day 4: 首先来看一段程序: //输出下面4*5的矩阵 /* 1  2  3   4   5 2  4  6   8   10 3  6  9   12  15 4  8  12  16  20 */ //算法1 /*//program 4.1 #include<stdio.h> int main() {     int i,j,n;     for(i=1;i<=4;i++)     {         n=i;         for…
12天学好C语言--记录我的C语言学习之路 Day 1: 刚刚入门C语言,那么肯定要先把什么是C语言和大家讲清楚,那么大家看下面一段程序(program  1.1): /*//program 1.1 #include<stdio.h>  //编译预处理指令,编译系统要求提供程序中有关函数的信息,而stdio是"standard input&output"的缩写(标准输入输出) //后缀.h的意思是header file(头文件) int main()    //定义…
一. 实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调用R语言的脚本文件进行传值运算,并将执行后的结果返回给Java程序. 二. 实验课题目标 要求能在R x64 3.6.1程序中进行简单的工作空间切换功能,以及掌握基本的shell.exec()和system()函数的应用. 掌握在R语言中进行包的下载和加载的方法,以及启动Rserve服务的方法. 掌…
一.编程语言与解释语言 1.程序的执行 a.解释:借助一个能试图理解程序的程序,使计算机按要求执行你自己写的程序 b.编译:将所写程序翻译为机器语言写的程序,使计算机按要求执行你自己写的程序 2.两者的关系: a.本质上无太大区别,个人喜好问题,都是程序的常用执行方式 b.语言本无解释/编译之分 c.各自的优势: 解释型语言有特殊的计算能力(以前认为慢,但后面随着硬件的发展,效率不是问题):编译型语言有确定的运算性能. 二.C语言发展历程 1.FORTRAN->BCPL->B语言(支持指针间接…
0.前言 我在上一篇文章中分析了 为什么 Python 没有 void 类型 的话题,在文章发布后,有读者跟我讨论起了另一个关于类型的问题,但是,我们很快就出现了重大分歧. 我们主要的分歧就在于:Python 到底是不是强类型语言? 我认为是,而他认为不是. 他写了一篇很长的文章<谁告诉的你们Python是强类型语言!站出来,保证不打你!>,专门重申了他的观点,但可惜错漏百出. 我曾有想法要写写关于 Python 类型的问题,现在借着这个机会,就来系统地梳理一下吧. (PS:在我写作进行到差不…
1.1 影响 Go 语言发展的早期编程语言 正如 "21 世纪的 C 语言" 这句话所说,Go 语言并不是凭空而造的,而是和 C++.Java 和 C# 一样属于 C 系.不仅如此,设计者们还汲取了其它编程语言的精粹部分融入到 Go 语言当中. 在声明和包的设计方面,Go 语言受到 Pascal.Modula 和 Oberon 系语言的影响:在并发原理的设计上,Go 语言从同样受到 Tony Hoare 的 CSP(通信序列进程 Communicating Squential Proc…
数据类型: 1.整型:int 2.小数类型: float(单精度) double(双精度) decimal () 3.字符类型: chr 4.字符串类型:sting 5.日期时间:datetime 6.布尔型数据:bool 7.对象类型:object 8.二进制:binary 语言类型: 1.强类型语言:c++ c c# java 2.弱类型语言:js php 变量定义: 1.强类型语言:int a 2.弱类型语言:var a(var 可以存储任何类型数据) 变量赋值: var a=10 输出语…
抄自:http://my.oschina.net/apeng/blog/137911 目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3,网络资源 附录 一些有用的C语言网络资源: 一些值得关注及研究的C语言相关项目: 一些C语言编程时可以使用的工具软件,帮你提高代码质量: C语言编程规范编程标准: C语言编程电子书及教程: 在这里想比较系统的谈谈个人对C语言学习方法的理解.分别按照书籍.实验环境搭建.网络资源来分别介绍,希望能写的比较完整全面一些,给…
12天学好C语言--记录我的C语言学习之路 Day 11: 因为指针部分比较的难,所以我们花费的时间也是最长的,希望大家耐的住性子,多多理解,多多打代码.好了,废话不多说,来看第11天的学习. //编写一个求定积分的通用函数,分别求出x+1,2*x+3,x*x*x的定积分 /*program 11.1 #include <stdio.h> int main() {     void djf(int x,int y,double (*p)(int,int));//大的函数也要有上下限做形参,因为…
12天学好C语言--记录我的C语言学习之路 Day 9: 函数部分告一段落,但是我们并不是把函数完全放下,因为函数无处不在,我们今后的程序仍然会大量运用到函数 //转入指针部分的学习,了解指针是什么 /*//program 9.1  #include<stdio.h>  int main()  {  int c=123,d=345;  int *a,*b;//定义两个整型的指针变量(int 是指针变量的基类型,我们必须在定义指针变量的时候指定基类型,因为变量的类型不同决定了他们在内存中所占字节…
12天学好C语言--记录我的C语言学习之路 Day 8: 从今天开始,我们获得了C语言中很有力的一个工具,那就是函数.函数的魅力不仅于此,一个程序到最后都是由众多函数组成的,我们一定要用好函数,用熟练.函数掌握了,就会对你的编程水平有不小的提升. 还是以一个简单的程序开始今天的学习: //输入10个数字,要求输出最大值和该值是数组中第几个元素(当然要用到函数思想) /*//program 8.1 #include "stdio.h" int main() {     int a[11]…
12天学好C语言--记录我的C语言学习之路 Day 7: 昨天进行了一天的数组学习,今天大家可以先写几个昨天的程序热热身,回顾回顾,然后今天第一个新程序也是关于数组的,比较难,准备好就开始啦! //输出奇数魔方阵,每一列.每一行以及对角线之和均相等(输入n为魔方阵的阶数,n为奇数) //首先说明一下魔方阵的形成规律:①将元素1放在第一行中间一列:②依次将数字放在前一个数字的右上角,如果超过了魔方阵的范围,就拿另一侧的位置补齐,这个步骤需要想象成一个可以穿过边界到达另一头的贪吃蛇游戏:③如果另一侧…
12天学好C语言--记录我的C语言学习之路 Day 6: 今天,我们要开始学习数组了. //①数组部分,数组的大小不能够动态定义.如下: //int n;   scanf("%d,&n"); int a[n];  这样就是错误的.数组的大小不能够依赖程序运行中变量的值. //②但是在函数中这样确实允许的.如下: //void func(int n) { int a[n]; ... }  这样是合法的,因为n是从实参传来的.这种情况被称为可变长数组,但是在执行函数的时候,n的值是…
12天学好C语言--记录我的C语言学习之路 Day 5: 第五天的学习开始了,今天我们主要对几个程序进行编写,让自己充分的熟练编程语言,大量的题目会让自己变的精炼.以一个程序(program 5.1)敲开沉睡的脑门吧. //求(1+2+3+...+98+99+100)+(1²+2²+3²+...+50²)+(1/1+1/2+...+1/10)=? /*//program 5.1  #include "stdio.h" int main() {     double a,b=1,c=1,…
12天学好C语言--记录我的C语言学习之路 Day 3: 不知不觉到了第三天的学习,我们前两天学习的东西很杂乱,各个方面都有学习.我觉得这不是不系统,也不是学的不扎实,这种学习对于初学者而言我认为是很好的.我们不要循规蹈矩的一点一点按照教科书上的编排去学习,因为那样太慢了,人家的编排是72学时,48学时来的.你没有那么多时间,想要在15天认识C语言,自然需要一些"剑走偏锋".我们虽然杂乱无章,但是记住,在看这15天的记录的时候,一定要多查资料,将这些没有规律的程序在自己的大脑中变的很有…
12天学好C语言--记录我的C语言学习之路 Day 2: 我建议大家每一天学习之前都仅凭记忆去敲前一天敲过的最后一个程序,或者敲前一天你认为最难最长的一个程序,如果一晚上的睡眠之后不看书还能敲的出来,那就非常不错了.至少这个程序你会记很长时间! 首先我们以一个程序敲开今天的学习.(program 2.1) //求1-1/2+1/3-1/4+...+1/99-1/100的值 /*//program 2.1 #include<stdio.h> int main() {     int sign=1…
抄自http://my.oschina.net/apeng/blog/137911,觉得很有用,收藏它 目录:[ - ] 为什么要学习C语言? C语言学习方法 1,参考书籍 2,动手实验环境搭建 3,网络资源 附录 一些有用的C语言网络资源: 一些值得关注及研究的C语言相关项目: 一些C语言编程时可以使用的工具软件,帮你提高代码质量: C语言编程规范编程标准: C语言编程电子书及教程: 在这里想比较系统的谈谈个人对C语言学习方法的理解.分别按照书籍.实验环境搭建.网络资源来分别介绍,希望能写的比…
原文:C语言单片和C#语言服务器端DES及3DES加密的实现 公司最近在做单片机和C#语言的通信.用的是Socket通信.传输的数据是明文,后来 在会上讨论准备用DES加密(对称加密)来做. 双方约定 相应的“密钥”. 以前做的加密一般都是用C#加密和C#解密.一直以为是个简单的问题,现在和用C写的单片机通信的时候却出了问题. 问题是什么呢? 我找了几个在线加密 解密的网站,还下了几个加密解密的工具.结果相同的数据,用相同的密钥却得到不同的结果. 而且现在网上C语言实现的DES资料基本上是不靠谱…
一.C语言的简介 1.C语言是一个标准,而执行标准的时候产生的自动化程序则是编译器2.了解:1983年美国国家标准化歇会(ANSI)制定了C语言标准.C语言的特点:3.代码的可移植性(理想状态是代码可以不加修改,就可以移植,前提是不包括任何平台相关库)4.写代码的时候最好把业务逻辑层和UI层分开.这样便于代码的移植5.结构化编程(可以把问题分解成一个一个的函数去执行)6.丰富的数据类型(相对于汇编而言是丰富的)7.简洁高效的代码(这得看人,不是编译器的或者语言的特性,如果算法写的不好,一样执行速…
日期:2014年7月18日   1.简介     Go 编程语言是一个使得程序员更加有效率的开源项目.Go 是有表达力.简 洁.清晰和有效率的.它的并行机制使其很容易编写多核和网络应用,而新奇的类型系统允许构建有性的模块化程序.Go 编译到机器码非常快 速,同时具有便利的垃圾回收和强大的运行时反射.它是快速的.静态类型编译语言,但是感觉上是动态类型的,解释型语言.     Go 是第一个实现了简单的(或更加简单的)并行开发,且跨平台的类 C 语言.   2.Go语言文档查看     安装好Go语…