教程
总体概括:Mac OS X系统简介;C语言;OC语言;Foundation;iOS开发;项目实战。
3.第一个c语言程序
#include <stdio.h>//预处理指令:在编译之前执行的指令
int main(int a)
{
//输出字符串到控制台,这个函数声明在stdio.h文件中
ptintf(“Hello world”);
return 0;//退出函数的意思
}
系统自带文件使用<>,自己写的文件用双引号“”。
.h成为头文件,用来声明一些常用函数,假如想使用这些函数,就必须包含这个头文件。
程序结构:
c程序由函数构成,任何一个c语言程序都是由一个或者多个程序段构成的就叫函数。不管整个程序中有多少个函数,都是先执行main函数,并且只有一个main函数。
函数定义放.c文件,函数的声明放.h文件。
4C语言程序的开发运行过程:
1编写程序
2编译:把c语言源代码编译0和1
将一个源文件(cc -c文件名.c )编译,编译成功会生成一个.o目标文件(cc文件名.o )(./当前路径)
3链接:其实就是把.o相关联的所有目标文件和函数库合并一起生成可执行文件。
4运行:运行可执行文件./a.out
总结:
.c是语言源文件,在编写程序时候创建
.o是目标文件,在编译成功时候产生
.out是可执行文件,在链接成功时候产生
总结change指令:
编译:cc -c xxx.c 链接:cc xxx .o
编译,链接:cc xxx.o
运行当前路径下可执行文件:./a.out
更改可执行文件的名称:cc xxx.c -o xxxx
源程序通过编译成目标文件接着通过链接将目标文件和系统函数合并就可以执行了。
编译器只会检测语法,不会检测有没有main函数,可执行文件必须要有且只有一个main函数才能执行,链接器检测是否有main函数。
5函数
定义函数目的:将一个常用的功能封装起来方便以后调用
定义函数的步骤:
函数名--函数体--明确函数参数和返回值
函数的声明:int sum(int a,int b);
函数的定义:
返回值类型 函数名(形式参数列表)
{
函数体
}
形参和实参:
比如:int sum(int num1,int num2);
括号里面的是形式参数简称形参
调用函数时候把实际参数简称实参
一个函数可以没有形参,也可以有无限多个形参
return的作用:1退出函数
2返回一个具体值给函数调用者
6printf函数:
printf函数和scanf函数都是在stdio.h中声明的一个函数。
用法:printf(字符串);printf(字符串,格式符参数)
常用格式符及其含义:
%d 输出整数int(
%c 输出一个字符char
%s 输出一个或多个字符也就是字符串
%f 输出小数默认6位float,double
7scanf函数:
调用scanf函数时,需要传入变量地址作为参数,scanf函数会等待标准输入设备输入数据,并且将输入数据赋值给地址对应的变量。(只接受变量的地址)
scanf函数是一个阻塞式函数,等用户输入
用户输入完毕后就会将用户的值赋给number变量,函数调用完毕
1输入字符
2一次性输入多个数值,并且以某些符号隔开输入字符
3scanf中不能写
8数据类型和类型修饰符
数据的分类:静态(存在硬盘里面)和动态数据(存在内存中)
静态占用硬盘空间;动态数据占用内存空间。
不管是静态还是动态都是0和1组成
c语言中数据类型分为:
一、基本数据类型(整型int,浮点型float,double,字符型char(-128到127))
二、指针类型void*
三、构造类型(数组,结构体struct,共用体union,枚举enum)
四、空类型void
变量:
变量含义:可变的数据 整形变量。字符变量。字符串变量。
定义变量目的:在内存分配一块存储空间给变量,方便以后存放数据(为何加上变量类型?是为了更好的让内存分配一定的存储空间给变量以及可读性。
格式:变量类型+变量名 比如:int a
变量-赋值:
每一次赋值都会将原来的赋值给覆盖。只要有不确定数据就应该定义变量.
在函数内部定义的变量就是局部变量
在函数外部定义的变量是全局变量。
声明一个局部变量要先初始化
变量在函数中的作用域:
1从定义变量那行代码开始一直到所在的代码块结束
2及时回收不再使用的变量为提升性能
不同变量类型占据的存储空间:
64位编译器:char 1个字节
int 4个字节
float4个字节
double8个字节
16位编译器:char 1
int 2
float4
double8
修饰符:
short long signed unsigned
这些修饰符是用来修饰int类型比如:
long int 11=2等价long 11 =2
常量:有3种:数值。字符常量。字符串常量。
9基本运算
c语言一共有34种运算符包括加+减-乘*除/
取余运算(模运算):两个整数相除之后的余数
1算术运算符-使用:
自动类型转换
强制类型转换
自动类型提升
2赋值运算符:
a+=5就是相当于a=a+5
3自增自减运算-使用:
a++相当于a+=1就是相当于a=a+1
a--相当于a-=1就是相当于a=a-1
自增自减运算a++和++a的区别:
a++就是a原来的值进行运算
++a就是先a加1再运算
基本运算--条件判断:
判断条件是否成立,就是判断条件的真假
C语言规定:任何非0值都是真,只有0才是假
关系运算比较:在C语言中,条件成立就返回1就是真,不成立就返回0是假
4关系运算符-优先级:
关系运算符中==、!=的优先级相等,<、<=、>、>=的优先级相等且前者的优先级低于后者:2==3>1
关系运算符的优先级小于算术运算符
-1+2*(2-4)>=1%2
4>3>0 true 1
4>3>2 false 0
5逻辑运算符简介:
逻辑运算结果只有2个:真为1,假为0
1逻辑与
使用格式:条件A&&条件B
只有当A和B结果都成立才是真,否则为假
2逻辑或
使用格式:条件A||条件B
只有当A和B结果只要有一个成立就是真,只有当A和B都不成立时候才为假
3逻辑非
使用格式:!条件A
对条件A进行取反:若条件A成立,结果为0,就是假,不成立结果为1就是真(真的变假,假的变真)
6逗号运算符和逗号表达式:
逗号运算符主要用于连接表达式,如:int a=9;
7.三目运算基本使用:
双目运算符如4+3>6-2
单目运算符如!10
三目运算符:条件?数值1:数值2
8sizeof:
作用:用来表示一个变量或者一个常量,一种数据类型所占的内存字节数
基本形式:
sizeof(变量或者常量)
sizeof变量常量
sizeof(数据类型)
不能是sizeof数据类型
10一维数组---属于构造类型
字节和地址:
计算机中的内存以字节为单位,每个字节都有自己唯一的地址。
相邻字节是联系的;不同类型字节不一样,数据越大,所占字节越多;
特点:
1内存寻址由大到小,优先分配内存地址比较大的字节给变量
2变量越先定义内存地址越大
3取得变量的地址:&变量名
地址运算符:&是一个地址运算符,取得变量的地址
当定义一个变量时,系统会分配一个带有唯一地址的存储单元来存储这个变量。
变量存储单元的第一个字节的地址就是该变量的地址。
一维数组的定义:类型 数组名[元素]
例如:int a[5];
数组的定义:int a [3] 数组的初始化:int a [2] ={8,7};
11.字符串的定义、初始化、输入、输出
关键字:
c语言一共提供了32个关键字,都被赋予特殊含义
特点:
1都是小写
2在Xcode中都会显示特殊颜色例如紫褐色
标识符:程序员自定义的一些符号和名称(命名)
命名规则:
1只能是26个字母的大小写,10个阿拉伯数字0到9,下划线组成
2严格区分大小写
3不能以数字开头
4不可以使用关键字作为标识符
注释:
注释含义是解释程序或者代码的意思
单行注释:以//开头,只能注释一行
多行注释:以/*开头,以*/结尾
作用:被注释的代码不会参与编译
1检查代码作用
2排除错误
常量:
定义:表示一些固定数据(const)
常量分类:
1整型常量包括所有整数
2浮点型常量分为double和float也就是小数(注意0.0也算是小数)
注意:float型数据都是以f结尾的
3字符常量
将一个数字,英文字母或者其它符号用单引号括起来构成就是字符常量例如:‘6',‘a',‘+’注意:单引号只能括住1个字符,而且不能是中文字符
4字符串常量string:
将一个或者多个字符用双引号串起来构成的就是字符串常量
‘