面试篇C语言精华 
 

1、面向过程:分析解决问题所需要的步骤,然后用函数把这些步骤一步一步实 现。

面向对象:直接描述客观世界的对象及其相互关系。现实世界中任何实体都 可以看作是对象,对象之间通过消息相互作用,利用面向对象编程,我们只关心 借口,不关心怎样实现。
2、C++的三个特性:继承、封装和多态。

  继承:一个对象直接使用另一个对象的属性和方法。继承可以使子类具有父
类的各种属性和方法,而不需要再次编写相同的代码。
  封装:在程序上,隐藏对象的属性和实现细节,仅对外公开接口,控制属性
的读和修改的访问级别。目的是:增强安全性和简化编程。

多态:接口多种不同的实现方式。同一个操作作用于不同的对象上可以有不 同的解释,并产生不同的执行效果。
3、sizeof

是个运算符,用来判断数据类型以及表达式长度。字节数数的计算是
在编译时进行的。

Sizeof(类型说明符、数组名或表达式)

4、typedef:用来为复杂的声明定义简单的别名。它本身是个存储类的关键字。

Typedef int newname:

#define:宏定义又称为宏代换、宏替换。三大预处理功能之一,另外两个是
文件包含和条件编译。

5、enum:

枚举类型,在实际问题中,有些变量的取值范围被限制在一个有限的范
围内。为了说明这些量,引入了新的数据类型。

6、Struct、class 构造函数理解:

struct 和 class 最本质的区别就是默认的访问控制:
Struct 默认的是 public,而 class 默认的是 private。
Struct:结构体类型,用于存放具有不同数据类型。
Class:类,是构造程序的基本单位。

7、static:关键字。

声明静态变量,存储在静态内存中。作用:保持变量持久和
隐藏。静态局部变量在程序执行到该对象的声明处的时被首次初始化,以后的函
数调用不再进行初始化。
8、Const:关键字。它限定一个变量不允许被改变。作用:在一定程度上可以提
高程序的安全性和可靠性。对别人理解程序也有一些帮助。同时,可以很方便地
进行参数的调整和修改。

9、C 和 C++内存分配:

(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序这个运行期间都存在。

(2)在栈上创建。在执行函数时,由编译器自动分配和释放。

(3)动态内存分配。由程序员自己决定分配,程序在运行时候用 malloc 或

new 申请任意字节内存,然后由程序员自己负责在何时用 free 或 delete 释放内存。
这样动态内存的生存周期由程序员决定,使用起来比较灵活。

char *p;
p=(char*)malloc(size);
.......
free(p):

int *p=new int;
........
delete p;

10、指针和引用:
引用:引用就是某一个变量的一个别名,对引用的操作与对变量的直 接操作

完全一样。Inta;int & ra=a; 定义引用 ra,它是变量 a 的引用。

区别:

(1)引用不能为空,指针可以为空。

(2)引用不可以改变指向,指针可以改变指向。
(3)引用的大小是所指向的变量的大小,而指针是指本身的大小。
(4)引用仅仅是个别名,而指针是个实体。

11、函数的返回值:

一个函数只能有一个返回值,超过一个返回值的函数可以使用指针或结构体变量。

12、extern:

声明外部变量或函数,已标示变量或函数的定义在别的文件中,提
示编译器遇到此变量或函数时,在其他模块中寻找其定义。

13、Char*p=”sdfsdf”; 这种方法初始化的是常量字符串,所以 p 不能修改字符串
的内容。

Char p[]=”sdfsdf”;

P=”sdfsdf”;

Char p[]=”sdfsdf”;

这两个都是变量,可以修改。

指针在 32 位系统下都占 4 个字节。

14、数组名和指针:

  数组名不是指针,数组名表示的是数组首元素的地址,是一个常量。

  指针存放的是一个变量的地址,它本身是个变量。

15、指针函数与函数指针:

  • 指针函数:本身是一个函数,是返回值为某一类型指针的函数。
    函数指针:本身是一个指针,该指针用来存放函数的地址。
    函数指针的作用:一是实现面向对象中的多态性;二是回调函数。

16、同步与异步:

  • 同步:发出一个功能调用时,在没有得到结果之前,该调用不返回。
  • 也就是必须一件一件事做,等前一件事做完之后才能做下一件事。
  • 异步:发出一个功能调用时,调用者不能立即得到结果。实际处理这
  • 个调用的部件在完成后,通过状态、通知和回调来通知调用者。

17、文件操作:

FILE *fp: fp=fopen(文件名,使用文件方式); ..........
fclose();

 

ios开发——面试篇C语言精华的更多相关文章

  1. ios开发——面试篇(一)

    面试篇之内存管理与多线程 简述OC中内存管理机制.­­­­­与retain配对使用的方法是dealloc还是release,为什么?需要与alloc配对使用的方法是dealloc还是release,为 ...

  2. iOS开发UI篇—Quartz2D使用(绘制基本图形)

    iOS开发UI篇—Quartz2D使用(绘制基本图形) 一.简单说明 图形上下文(Graphics Context):是一个CGContextRef类型的数据 图形上下文的作用:保存绘图信息.绘图状态 ...

  3. iOS开发数据库篇—SQLite简单介绍

    iOS开发数据库篇—SQLite简单介绍 一.离线缓存 在项目开发中,通常都需要对数据进行离线缓存的处理,如新闻数据的离线缓存等. 说明:离线缓存一般都是把数据保存到项目的沙盒中.有以下几种方式 (1 ...

  4. iOS开发数据库篇—SQL

    iOS开发数据库篇—SQL 一.SQL语句 如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句 1.什么是SQL SQL(structured query language):结构化查 ...

  5. iOS开发数据库篇—SQLite的应用

    iOS开发数据库篇—SQLite的应用 一.简单说明 在iOS中使用SQLite3,首先要添加库文件libsqlite3.dylib和导入主头文件. 导入头文件,可以使用库中的函数(是纯C语言的) 二 ...

  6. IOS开发数据库篇—SQLite模糊查询

    IOS开发数据库篇—SQLite模糊查询 一.示例 说明:本文简单示例了SQLite的模糊查询 1.新建一个继承自NSObject的模型 该类中的代码: // // YYPerson.h // 03- ...

  7. iOS开发Swift篇—(一)简单介绍

    iOS开发Swift篇—简单介绍 一.简介 Swift是苹果于2014年WWDC(苹果开发者大会)发布的全新编程语言 Swift在天朝译为“雨燕”,是它的LOGO 是一只燕子,跟Objective-C ...

  8. iOS开发UI篇—Quartz2D简单使用(二)

    iOS开发UI篇—Quartz2D简单使用(二) 一.画文字 代码: // // YYtextview.m // 04-写文字 // // Created by 孔医己 on 14-6-10. // ...

  9. iOS开发多线程篇—创建线程

    iOS开发多线程篇—创建线程 一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 创建.启动线程 (1) NSThread *thread = [[NSThread alloc] in ...

随机推荐

  1. 获取apk信息工具(android SDK的aapt工具)

    aapt命令是android SDK 中的一个工具,功能强大,比如在windows平台获取apk包的信息. 使用该工具准备条件,也即获取aapt.exe文件的方式(2选1即可): 安装android ...

  2. [Irving]WPF Invalid character in the given encoding. Line xx, position xx.' XML is not valid.

    WPF开发中发现Xaml界面中突然抽风似的提示错误 Invalid character in the given encoding. Line xx, position xx.' XML is not ...

  3. qt文本编辑器

    示例代码: mainwindow.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include ...

  4. bzoj 3207 花神的嘲讽计划Ⅰ(哈希法+主席树)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3207 [题意] 给定一个文本串,多次询问K长的模式串是否在文本[l,r]区间内出现. ...

  5. 【bzoj3233】【ahoi2013】找硬币

    题意: 求确定n种货币面额x1..xn满足 x1=1 且xi为xj的整数倍(i>j) 给定n个物品价格ai 求使用上面货币最少需要硬币数(不能找零) 题解: 动态规划 听说网上的题解都是搜索的做 ...

  6. 从使用到原理学习Java线程池

    线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. 所 ...

  7. Spark RDD概念学习系列之RDD的重要内部属性(十五)

    RDD的重要内部属性 通过 RDD 的内部属性,用户可以获取相应的元数据信息.通过这些信息可以支持更复杂的算法或优化. 1)分区列表:通过分区列表可以找到一个 RDD 中包含的所有分区及其所在地址. ...

  8. Java邮件服务学习之三:邮箱服务客户端-Java Mail

    一.java mail的两个JAR包 1.mail.jar:不在JDK中,核心功能依赖JDK4及以上,该jar包已经加入到java EE5: 下载地址:http://www.oracle.com/te ...

  9. Android实例-获取程序版本号(XE10+小米2)

    相关资料: 383675978群号 实例源码: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, Sy ...

  10. HDU 5839 Special Tetrahedron (计算几何)

    Special Tetrahedron 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5839 Description Given n points ...