您的位置:首页 > 编程语言 > C语言/C++

黑马程序员-2 ios学习历程 C语言基础回顾

2014-11-20 13:31 417 查看
乘着自己学习的热情高涨,迫不及待的开始了oc的学习。但在oc之前还是十分有必要回顾c语言的。

博客目录:

1.错误总结和解决

2.C语言回顾

3.个人总结

一:错误总结和解决

在开始C语言回顾之前,先记录一下自己昨天晚上和今天上午遇到的问题和解决方法。

1.vm虚拟机搭建完mac os 10.9.4之后,就立刻安装了xcode6.0,安装时,由于本人小白,习惯了windows双击运行的习惯。所以,我也双击了xcode_6.dmg 一切都和.exe 安装差不多。但是,安装过后,发现“应用程序“下没有xcode.app。后来才发现,原来mac安装就是安装页面提示的“drag
to install xcode in your applicationsfolder“(就是直接拖进右边applications)。

2. 打开终端((shift+command+U),编译1.c程序时,终端提示”xcrun: error: active developerpath(“/Volumes/Xcode/Xcode.app/Contents/Developer”) does not exist, use xcode-select
to change“好像是找不到目录了,百度一下,问题解决:终端输入”sudo xcode-select-
switch/Applications/Xcode.app/Contents/Developer“提示超级用户密码,输入密码,解决这里,必须理解一下,sudo 命令与Linux sudo一样的,是为普通用户提供管理员权限执行一些root命令。现在,mac os xcode可以完美运行,废话不多直接代码练习。



二:C语言回顾

有人说C语言不是高级语言,对此我只想说,管他高不高级,学会就不高级了,不会就高级。C语言,一些基本数据类型不做具体说明,自己应该可以想起了。自己总结了很多,但是感觉得把最使用的留下,所以这里只记录了数组和指针(我经常会犯错误的c地方)。

梗概:

1.C语言的特点

C语言是一种介于低级语言和高级语言的一种中级语言,他既有低级语言(面向系统和硬件)的优点,又包含高级语言(面向用户,容易记忆,易读性等)的优点。

控制性---自顶向下的规划,结构化的编程

高效性---程序紧凑且运行速度快

可移植性---稍许改动就可以在其他系统上运行

面向程序员---允许程序员访问硬件,操作内存中的定位

2.C语言历程







3.C语言关键字







4.C语言数据类型





常见的转义



(小技巧)使用const而不是宏定义



变量:

变量的隐式转换:



结构体,共用体

结构体

特点:

可以对结构体整体初始化

可以讲一个结构体变流量整体赋值给另一个结构体变量。

可以整个结构体变量或个成员变量取地址

不可以在定义结构体类型时让成员低啊有初值

不可以判断两个结构体变量是否相等

共用体

特点

共用体变量的定义和结构体变量定义类似

共用体与结构体不同之处在于:

共用体变量中的各成员变量共同使用同一存储空间

一个共用体变量多占内存元素数围棋成员占用内存单元最大者

5.c运算符



数组:我的理解是:他不同于指针,是分配的连续内存区域,这样数组的读写效率应该会比单独变量快好多。

1.数组声明和初始化

定义方式:类型 数组名【元素个数】

初始化: 完全初始化
int a[5] = {1,2,3,4,5};

部分初始化 int b[5] = {3,2};

默认初始化 int c[] = {1,2,3};

2.数组的特点

存储空间连续

元素之间有序

元素类型相同

元素个数固定(除了在堆上分配)

数组元素无名

3.访问数组

一个例子就勾起我的记忆了



4数组和指针

这里有必要区分:指针数组和数组指针一个挺有用的链接 http://www.cnblogs.com/mq0036/p/3382732.html(这里不再记录)。


C语言精华:指针:

1.必须说一下指针的好处:提高程序效率(高效地传递数组和结构,指针偏移可以指向任何数组元素或者任何数据结构的成员) 。

实现动态数组,对多个相似变量的一般访问(模拟数组)。

2.指针的实现



3指针使用时个人错误总结

a:指针是一种容纳地址的变量,通常也叫指针变量,统称指针。而地址则是内存单元的编号,是一个常值。指 针绝对 不等同于地址,千万不要把二者意义混淆。

b:指针与数组使用时,使用前必须分配空间,并指向null,使用后应该回收:空间回收free,指向null。

c:指针作为参数传入函数中,是传入了指向,所以会直接改变指向区域的内容。

d:常见使用:



C语言回顾总结

C语言要求有很高的编程素养,他面向过程,一个小符号都会让你的程序错误百出。而避免这些的条件就是,基础的扎实和重复额练习。

4.修饰符变量的关键字

const,extern,register static

const

作用:可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
const int i = 0; //const 修饰变量必须在定义时初始化
int const i = 0; //也可以通过编译,只是一般不那么写
int *const  p = &i; //常指针,指针永远指向同一内存地址
const int *p = &i; //指向常量的指针,不能通过编译p 来改变变量

register
 

register int i = 10;

 寄存器变量--可以被存储在cpu寄存器中,这仅仅是个请求,未必成功

1、可以使用register声明的类型是有限的,例如,处理器可 能没有足够大的寄存器来容纳double类型。(例如:32位 寄存器。)

2、寄存器数量有限,寄存器不够时候变量申请放到寄存器中 也未必成功

 
static

修饰变量—该变量变成静态变量

static int i;

如果是静态局部变量,影响变量的生存期(和普通局部变量比较起来更 “长命”),作用域不变,仍然由函数块域限制(即“{}”限制)。

如果是全局静态变量,生存期不变(和全局变量比较起来依然“长命”),但将变量访问本地化(作用域在本.C文件)。

 

修饰函数

static void fun()

{

}

将函数的调用本地化, 只可以由本.C中的其他函数调用。

 
extern
 修饰变量

extern int i;

变量声明,不是定义, 随后可能要使用该变 量,无论该变量在其 他.C中实现(定义), 还是在本.C中实现(定义)都可以继续访问变 量。

修饰函数

extern void fun();

要引用某函数的声明,不是实现(定义)。引用后 可以调用该函数,无论该函数在其他.C中实现(定义),还是在本.C 中实现(定义)

 

三:个人总结

 回顾了C语言的基础部分,和先前浏览的oc简单程序作了对比,感觉确实如李明杰老师说的,C语言是好多语言的基础。昨晚加班把视频资料消化了一遍,已经迫不及待的想去学习oc了。万丈高楼平地起,一步一个脚印。

黑马加油!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息