
C语言
文章平均质量分 78
mcvsyy521
我选择我喜欢~~~生活舞台无小丑,甩出你的优点你就是最优秀的.......
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C语言指针
指针是C语言中广泛使用的一种数据类型。 运用指针编程是C语言最主要的风格之一。利用指针变量可以表示各种数据结构; 能很方便地使用数组和字符串; 并能象汇编语言一样处理内存地址,从而编出精练而高效的程序。指针极大地丰富了C语言的功能。 学习指针是学习C语言中最重要的一环, 能否正确理解和使用指针是我们是否掌握C语言的一个标志。同时, 指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,转载 2013-03-15 12:08:54 · 542 阅读 · 0 评论 -
8.C语言之预处理
一.宏定义1.预处理指令在第一篇文章中,我们就提到了预处理器的概念。预处理器就是用来处理预处理指令。预处理指令包含以下三种:A. 宏定义 #defineB. 文件包含 #includeC. 条件编译 #if #ifdef等等。2. 简单的宏定义在之前我们就广泛地运用了宏定义,在此不在赘述。3. 带参数的宏定义带参数的宏定义,也称为函数式宏。举个简单的例子:转载 2013-10-23 15:43:03 · 546 阅读 · 0 评论 -
1.C语言之:编译连接%d,%s,exit,return
1. 编译和链接将程序转化为机器可执行的代码,C语言分为三个步骤:A. 预编译。程序首先会交给预处理器,预处理器执行以#开头的指令,然后给程序添加指令,或者修改指令。B. 编译。修改后的程序进入编译器,编译器会把程序翻译成机器指令(也就是目标代码),但是这样的程序还是不能执行的。C. 链接。链接器把由编译器产生的目标代码和其他所需的代码整合到一起,这些附加代码包括程序中用到的库函数转载 2013-10-23 09:31:46 · 513 阅读 · 0 评论 -
6.C语言之字符串
1. 字符串入门字符串也称字符串字面量,是用一对双引号括起来的字符序列。我们也许经常会遇到字符串特别长的情况,在C#中,我们一般会用@符号来表示。 Console.WriteLine(@"Hello World");但是在C中,我们会这样来写:int main(){ printf("Hello "转载 2013-10-23 15:12:39 · 436 阅读 · 0 评论 -
3.C语言之typedef 和sizeof
1. typedef在前文中,我们用宏定义来定义了一个BOOL类型,那么现在就用更专业的方式来定义类型。int main (void) { Bool flag=1; if(flag) { printf("True"); } else { printf("false"); } }转载 2013-10-23 10:24:19 · 655 阅读 · 0 评论 -
4.C语言之数组
1. 数组大小我相信,在C#/Java中,更多的人愿意用List来取代数组,一方面是List提供了较多的方法,另一方面也无需我们去指定数组的大小。那么在C语言中,我们既然需要必须指定数组的大小,而一般来讲,很多数组大小事我们无法确定并且经常会发生变化的,那么我们最好的方式就是用宏定义来限定数组的大小。#define SIZE 10 int main (void) { i转载 2013-10-23 12:10:05 · 455 阅读 · 0 评论 -
7.C语言之字符串操作函数
在这一节,我想主要来介绍一下C语言操作字符串的常用函数。C语言的字符串函数的原型都驻留在头文件中,因此我们在处理字符串时,需要引入这个头文件。但是,我不希望只是单纯地介绍每个函数的用法,如果那样,看API就可以了,我希望在介绍每个函数时都自己来实现一次。1. strcpy函数string copy,我们先来看一下该函数的用法。#include#includeint转载 2013-10-23 15:37:01 · 441 阅读 · 0 评论 -
9.C语言之结构体和联合体
1. 结构体声明学习C#/Java的我们,结构体相信都非常熟悉了。简单先来介绍下语法,声明一个结构体:struct{ char *name; int age;}person1,person2;int main (void){ person1.name="kym"; person1.age=21; printf("%s转载 2013-10-23 15:50:12 · 458 阅读 · 0 评论 -
C语言数据结构--位图法
一、定义 位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。在STL中有一个bitset容器,引用bitset介绍: A bitset is a special container class that is designed to store bits (elements wit原创 2013-11-04 09:51:11 · 1224 阅读 · 0 评论 -
看得懂的回调函数
回调函数是一个程序员不能显式调用的函数;通过将回调函数的地址传给 调用者从而实现调用。回调函数使用是必要的,在我们想通过一个统一接口实现不 同的内容,这时用回掉函数非常合适。比如,我们为几个不同的设备分别写了不同 的显示函数:void TVshow(); void ComputerShow(); void NoteBookShow()...等 等。这是我们想用一个统一的显示函数,我转载 2014-02-10 10:02:11 · 464 阅读 · 0 评论 -
5.C语言之指针
1. 指针的来源在当代,大多数的现代计算机都会把内存分割成字节,每个字节都有着其唯一的地址。可执行程序由代码和数据两部分构成,而程序中的每个变量都占有着一个或多个字节,也就是说,每个变量都有着自己的地址。而这个就是指针的来源。其实每个地址就是一个数,但是我们却不能用数来表示地址,存储地址,我们需要用指针变量。例如int *p = i,我们就可以说p是指针变量,存储着变量i的地址。那么我转载 2013-10-23 14:29:13 · 417 阅读 · 0 评论 -
2.C语言之数据类型
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://kymsha.blog.51cto.com/647951/2896891. C语言中的布尔类型在C语言中,是没有布尔类型的,0就是false,非0就是true。于是,写习惯了Java/C#的我们自然会很不习惯,这个时候,我们不妨用宏定义来使我们的代码看起转载 2013-10-23 09:41:51 · 548 阅读 · 0 评论 -
C语言之编译链接全过程分析
C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接。编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程。链接是把目标文件、操作系统的启动代码和用到的库文件进行组织,形成最终生成可执行代码的过程。过程图解如下:从图上可以看到,整个代码的编译过程分为编译和链接两个过程,编译对应图中的大括号括起的部分,其余则为链接过程。原创 2013-10-24 13:32:11 · 1678 阅读 · 0 评论 -
struct和typedef struct
分三块来讲述:1 首先: 在C中定义一个结构体类型要用typedef: typedef struct Student { int a; }Stu;于是在声明变量的时候就可:Stu stu1;如果没有typedef就必须用struct Student stu1;来声明这里的Stu实际上就是s转载 2013-03-24 17:43:24 · 342 阅读 · 0 评论 -
进程的创建与可执行程序的加载
实验二:进程的创建与可执行程序的加载一、进程的创建1、进程进程既是一个独立拥有资源的基本单位,又是一个独立调度的基本单位。一个进程实体由若干个区(段)组成,包括程序区、数据区、栈区、共享存储区等。每个区又分为若干页,每个进程配置有唯一的进程控制块PCB,用于控制和管理进程。2、 PCB的数据结构如下:a、进程表项(Process Table Entry)原创 2013-05-31 17:20:37 · 919 阅读 · 0 评论 -
C语言main()函数详解
C语言main()函数详解C的设计原则是把函数作为程序的构成模块。main()函数称之为主函数,一个C程序总是从main()函数开始执行的。一、main()函数的形式在最新的 C99 标准中,只有以下两种定义方式是正确的:int main( void ) /* 无参数形式 */{ ... return 0;}int转载 2013-08-21 16:05:06 · 564 阅读 · 0 评论 -
API SOCKET基础(一) TCP建立连接并通信
API SOCKET基础(一) TCP建立连接并通信写这篇日志,并不是要记录令人眼前一亮的算法,只是为了本人健忘的脑袋做一点准备。要进行网络通信编程,就要用到socket(套接字),下面以TCP为例展示如何利用socket通信。要进行socket编程,首先要为工程链接导入库文件 ws2_32.lib ,然后添加头文件 #include ,然后在App类的InitInstance(转载 2013-08-22 09:49:55 · 952 阅读 · 0 评论 -
主机名解析成IP地址
struct hostent *h = gethostbyname(argv[2]); hostaddr = ((struct in_addr *)h->h_addr_list[0])->s_addr;argv[2]:是对应的主机名,如:srwp05mgt001gethostbyname()返回对应于给定主机名的包含主机名字和地址信息的hostent结构指针。结原创 2013-08-27 10:16:02 · 2115 阅读 · 0 评论 -
C语言变量的存储类别
前面已经介绍了,从变量的作用域(即从空间)角度来分,可以分为全局变量和局部变量。从另一个角度,从变量值存在的作时间(即生存期)角度来分,可以分为静态存储方式和动态存储方式。 静态存储方式:是指在程序运行期间分配固定的存储空间的方式。 动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。用户存储空间可以分为三个部分:程序区;静态转载 2013-08-30 09:50:41 · 464 阅读 · 0 评论 -
结构体的内存分配
结构体的内存分配假设这台机器 sizeof(char) = 1 sizeof(int) = 4 sizeof(double) = 8枚举类型只为最宽的数据分配内存,在不同是时候,用的是同一块内存;结构体的内存分配依赖于结构成员的类型;一: struct s { int i; char c; double转载 2013-10-15 10:26:59 · 516 阅读 · 0 评论 -
11.C语言之优先级和连接器
一.优先级在C语言中,经常会出现一些复杂的类型声明。而大多数都是涉及到指针的类型。那么就在这一节来集中认识一下。首先,我们先来了解*,()和[]的组合。在看实际例子前,先来看一个重要的规则:在做选择时,始终使[]和()的优先级大于*。举个简单的例子:int *arr[10]。由于[]的优先级大于*。也就代表,首先这是一个含有10个元素数组,那么数组内的内容是什么呢?是int *转载 2013-10-24 13:13:59 · 666 阅读 · 0 评论 -
10.C语言之动态内存分配
一.动态内存分配和函数指针指针1. 动态内存分配先来介绍三个动态内存分配的函数:malloc,calloc和realloc。说来惭愧,以前只知道malloc。现在来看下他们的区别:malloc:最常用的分配内存块,但是不对内存进行初始化。calloc:分配内存块,但是对内存块进行清零操作,这就造成此函数的效率要比malloc要低。realloc:调整(增加或者减少)之前分配内存转载 2013-10-24 10:34:07 · 586 阅读 · 0 评论 -
结构体内存分配与sizeof()
结构体成员的内存分布与对齐马国峻 maguojun2005@sina.com我们先看一道IBM和微软的笔试题:IBM笔试题:struct{ short a1;short a2; short a3; }A; struct{ long a1; short a2; }B; sizeof( A)=6,转载 2014-04-21 15:44:25 · 918 阅读 · 0 评论