面试题7

27、C语言中static变量和static函数有什么作用?

(1)表示变量是静态存储变量,表示变量存放在静态存储区

(2)加在函数前面的时候表示该函数是内部链接,只在本文件中有效,别的文件不能应用该函数。

28、指针提

a)int a;//一个数值

b) int *a;//一个指向数值的指针

c)int **a;//一个指向指针的指针

d)int a[10];//一个有10个指针的数组

e)int *a[10];//一个有10个指针的数组,该指针是指向一个整型数的

f)int (*a)[10];//一个指向有10个整型数数组的指针

g)int (*a)(int);//一个指向函数的指针,该函数有一个整型参数并返回一个整型数

h)int (*a[10])(int);//一个有10个指针的数组,该指针指向一个函数,该函数有一个整形参数,并返回一个整型数。

30、c和obj-c如何混用,C++和obj-c呢

实现文件的扩展名.m改成.mm即可,但cpp文件必须只能用c/c++代码,而且cpp文件include的头文件中,也不能出现obj-c的代码,因为cpp只能写C++的代码


31、obj-c中又私有方法、私有变量吗?

(1)使用private修饰的全局变量是私有变量

(2)obj-c在语法书没有设计私有的方法,不过可以通过延展在实现文件里定义的方法作为私有方法。但不是真正意义上的私有方法,也是可以调用的,只是在外部看不见而已。

32、下面关键字const有什么含义?

const int a ;

int const a;

const int * a;

int * const a;

(1)前两个的作用是一样的,a是一个常整型数

(2)第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)

(3)第四个意思a是一个指向整型数的常指针(也就是说,指针指向 的整型数是可以修改的,但指针是不可修改的)

33、C语言中extern的作用,extern c的作用?

(1)extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

(2)C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而c语言不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern “C”进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名

34、obj-c是如何管理内存的?

OC语言使用引用计数来管理一个对象的生命周期,当对象被其他“人”使用的时候引用计数+1,不使用时-1,当此对象的引用计数为0时,则对象被系统回收。

35、什么是动态绑定(多态)?

动态绑定是面向对象特性之一的多态的体现,声明的一个变量,在 运行的时候可以绑定不同的对象,比如在方法的参数中声明这样一个变量UIVIew *view,运行的时候,我们可以根据不同的应用场景给view变量传入不同的对象,可以传递一个UIButton对象,也可以传入一个UIImageView对象。


36、你是如何理解delegate

delegate,又称为委托或代理,他是一种设计模式。delegate主要用于两个对象之间的通信交互,并且解除两个通信对象的耦合性,iOS中大量使用了delegate设计,主要用于视图与使用对象之间的通信交互。


37、block与函数有何异同,block有何优点

(1)block类似与c里面的函数指针,都可以作为参数进行传递,用于回调。但是block的实现可以定义在方法中,函数则不可以。

(2)block语法简洁,可以在方法中定义实现,这样可以访问方法中的局部变量,使代码更加的紧凑,结构化。


38、为什么标准头文件都有类似以下的结构啊

#ifndef __INCvxWorksh

#define __INCvxWorksh

#ifdef __cplusplus

extern "C"

#endif

/*...*/

#ifdef __cplusplus

}

#endif

#endif /*__INCvxWorksh*/


显然,头文件中的编译宏#define __INCvxWorksh\#define __INCvxWorksh、#endif的作用,是防止该头文件被重复引用。


39、cocoa touch框架

UIKit 、Foundation、CoreGraphic、CoreAnimation

(1)音频和视频

Core Audio

OpenAL

Media Library

AV Foundation

(2)数据管理

Core Data

SQLite

(3)图形和动画

Core Animation

OpenGL ES

Quartz 2D

Core Graphic


(4)用户应用

Address Book

Core Location

Map Kit

Store Kit


40、栈结构和队列的区别?

栈是限定只能在表的一端进行插入和删除操作的线性表。

队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。

1、队列先进先出,栈先进后出

2、对插入和删除操作的“限定”。栈是限定只能在表的一端进行插入和删除操作的线性表。队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。

3、遍历数据速度不同。队列遍历数据的速度要快的多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值