简单的介绍了一下C语言的一些小东西,适合有一定工作经验复习用
创建C程序:xcode ->OSX的Application -> Command Line Tool -> 选择C语言
1,示例代码:main函数
#include <stdio.h>
main(){
printf("Hello, World! \n");
return 0;
}
解释1:#include 简单的说:系统的东西用#include<> , 而自己写的东西用#include””
有的时候会遇到#include”..\myFile.h” 和 #include”.\myFile.h” ,区别在于 ..\ 是当前目录的父目录,而 .\ 是当前目录,
例如如果当前目录是C:\fitst\second , 那..\ 就代表C:\first 目录下, .\代表C:first\second 目录下(即当前目录下)
OC中得#import和#include用法一样,不过#import不会引起交叉编译
解释2:main是C得入口函数,由于C语言是面向编程(不是面向对象)所以需要注意C语言函数一般需要前置声明;
如果项目很大或者参与项目的人员较多,最好还是写一个头文件来放函数声明,写一个实现文件来放函数实现
注意main函数是有返回值的,为int(这个main可以省略掉返回值,但强烈建议任何函数都加上返回值);并且没有返回值应该是void
其实mian也是OC的入口函数,不过不用你管;具体位置就在Supporting Files下有一个main.m ,可以看一下,以后会讲到
解释3:C语言中printf 默认是不换行的,因此需要加上\n 来强制换行,但OC得NSLog和swift的println默认是换行的,毕竟是高级语言吗!
有时候需要输出 双引号 ,单引号等等特殊字符,特别是涉及到多个特殊字符输出,一开始很容易懵了!
不过,简单的办法就是先把你要输出的东西写出来,然后特殊字符前加\
例如:我想要输出 my name is "jiaozk",first name is ‘jiao‘ , last name is ‘zk‘
改成 my name is \"jiaozk\",first name is \‘jiao\‘ , last name is \‘zk\‘
输出printf("my name is \"jiaozk\",first name is \‘jiao\‘ , last name is \‘zk\‘ \n");
至于特殊字符有哪些,请自行google
解释4:大多数语言都需要编译,链接和运行,三个阶段。C语言也是,源文件以ASCII码的形式存储,编译器将其编译成 .obj文件,链接所有相关联的文件,生成exe程序就可以在window上运行了
不过编译,链接和运行作为了解就好!xcode都帮你做了
ASCII码是什么,请大家自行google,ASCII码用处较多,例如比较
2 示例代码:基础类型
void baseType(){
int intType; //解释1
double doubleType = 23.6023; //解释2
char charType = ‘A‘; //解释3
bool boolType = true; //解释4
//string *str = "string"; //解释5
int intArray[3] = {0}; //解释6
}
解释1:声明一个int型的变量,但是如果声明却没有赋值,系统会随机赋值可能会造成不必要的麻烦,所以任何时候声明变量都赋初值是个好习惯
解释2:声明一个long double类型,有四种修饰基本类型的标识符:
long 和short 用来修饰整数的取值范围,long double要比double所能展现的数字更大,不过用的不多;
signed和unsigned 用来区分有符号的还是无符号的,signed是有符号的包括正数负数和0,unsigned是无符号的包括正数和0,不过好玩的是,它们并不会改变数据的长度,也就是所占的字节数,因此如果signed int 的范围是-32768 ~ 32767 (PS:想想为啥是这个范围),那么unsigned int的范围就是 0 ~ 65535
解释3:声明一个char类型,char只能存储一个字符,取值范围是-128 ~127 ,其实这条等价于 等价于char charType = 65 ,因为 A 的ASCII码就是65
解释4:原来C语言是没有布尔值的,只有用1或0来判断,但C99后添加了bool,需要引入 #include <stdbool.h> ,其实还是1表示true,0表示false
解释5:C语言中是没有字符串这种类型的,但可以用char的数组表示,例如:
char charArray[3] = "abc" ; 等价于 char charArray[3] = {‘a‘,‘b‘,‘c‘};
PS:请自行百度为什么前面是双引号,后面是单引号
解释6:声明一个int类型的数组,并且为数组的所有元素赋值0;如果不赋值0,那么不同的编译器可能会为int数组内的元素随机赋值,
例如在xcode中int intArray[3] = {0 , 1};那么intArray[2]取出来就是一个随机值,如下
其实这么写是不规范的,相当于用一个包含两个元素的数组去给一个三个元素的数组赋值
但在xcode中,如果声明一个 char charArray[3];编译器会自动为每个元素赋值‘\0‘
C语言中得数组是固定大小的,申请了多大就是多大
C语言还有二维数组,可以想象成一个长方形,用的不是很多,而且挺简单的,自己google吧
参考文献:
http://www.cnblogs.com/mjios/archive/2013/03/13/2957471.html
http://www.cnblogs.com/mjios/archive/2013/03/13/2957628.html
http://www.cnblogs.com/mjios/archive/2013/03/13/2957946.html