摘要:
1. 字符串入门 字符串也称字符串字面量,是用一对双引号括起来的字符序列。 我们也许经常会遇到字符串特别长的情况,在C#中,我们一般会用@符号来表示。 Console.WriteLine(@"Hello World");但是在C中,我们会这样来写:int main(){ printf("Hello " "world"); return 0;}还记得我曾经讲的最多的一句话就是,把字符串当做字符数组... 阅读全文
摘要:
1. 指针的来源 在当代,大多数的现代计算机都会把内存分割成字节,每个字节都有着其唯一的地址。可执行程序由代码和数据两部分构成,而程序中的每个变量都占有着一个或多个字节,也就是说,每个变量都有着自己的地址。而这个就是指针的来源。 其实每个地址就是一个数,但是我们却不能用数来表示地址,存储地址,我们需要用指针变量。例如int *p = i,我们就可以说p是指针变量,存储着变量i的地址。 那么我们说... 阅读全文
摘要:
1. 数组作为函数参数 函数是我们学习程序设计语言最基本的东西了,我在此不再赘述。只讨论一种特殊情况,就是数组作为函数的参数传递。 我们都知道,其实在传递数组的时候,实际上是传递了数组首元素的指针。明确了这一点之后,我们就可以思考下面的问题。 既然他只是传递了数组首元素的指针,那么他必然无法知道整个 阅读全文
摘要:
1. 数组大小 我相信,在C#/Java中,更多的人愿意用List<T>来取代数组,一方面是List提供了较多的方法,另一方面也无需我们去指定数组的大小。 那么在C语言中,我们既然需要必须指定数组的大小,而一般来讲,很多数组大小事我们无法确定并且经常会发生变化的,那么我们最好的方式就是用宏定义来限定数组的大小。#define SIZE 10int main (void){ int a[SIZE]... 阅读全文
摘要:
1. typedef 在前文中,我们用宏定义来定义了一个BOOL类型,那么现在就用更专业的方式来定义类型。typedef int Bool;int main (void){ Bool flag=1; if(flag) { printf("True"); } else { printf("false"); }}typedef 的作用就是类型定义(Type Definition)。类型定义有以下三个... 阅读全文
摘要:
1. 编译和链接 将程序转化为机器可执行的代码,C语言分为三个步骤: A. 预编译。程序首先会交给预处理器,预处理器执行以#开头的指令,然后给程序添加指令,或者修改指令。 B. 编译。修改后的程序进入编译器,编译器会把程序翻译成机器指令(也就是目标代码),但是这样的程序还是不能执行的。 C. 链接。链接器把由编译器产生的目标代码和其他所需的代码整合到一起,这些附加代码包括程序中用到的库函数。这样... 阅读全文