C语言部分:
在C语言中,如何查看变量地址?
Char a =’A’;
Int b = 66;
Printf(“a的地址%d\n”,&a);
Printf(“b的地址%d\n”,&b);
printf和puts有什么区别
1,Printf可以输出多个字符串,Puts只能输出一个字符串
2,puts会自动换行。相对来说Printf比较灵活
scanf和gets的区别
Gets不安全
Scanf不能接收空格 ,tab,回车。
按作用域区分,变量可以分为哪些?
局部变量,成员变量
数组名跟指针的区别?
数组名只是一个指针常量,指针是指针变量,指针的值可以变化,但是数组常量的值不可变
变量的作用域?
从定义变量的那一行代码开始,一直到所在的代码块结束
64位编译器下int char float double所占的字节数
int 4个字节
char 1个字节
float 4个字节
double 8个字节
有函数声明没有函数定义会发生什么情况
1>编译可以通过,因为编译器只会检测语法是否合理,并不会检测函数有没有定义
2>链接会报错,因为链接的时候会检测函数是否定义
函数是否能重复声明,是否能重复定义?
函数可以重复声明,但是不能重复定义
c语言的运算符有哪些?
算数运算符
逻辑运算符
关系运算符
三目运算符
位运算符
赋值运算符
字符串结束的标记?
\0
在64位编译器中,指针所占的字节数?
8个字节
为什么指针要有类型?
存或取时按几个字节存取
局部变量的定义,作用域,生命周期,初始值?
1>定义:在函数(代码块)内部定义的变量(包含函数的形参)
2>作用域:从定义变量的那一行开始,一直到代码块结束
3>生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,被回收
4>没有固定的初始值
全局变量的定义,作用域,生命周期,初始值?
1> 定义:在函数外面定义的变量
2> 作用域:从定义变量的那一行开始,一直到文件结尾(能被后面的所有函数共享)
3> 生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁
4> 默认的初始值就是0
static用在局部变量中有什么用?
Static用在局部变量中,可以在许初始化的时候就存在这个变量,提高效率,但是没有改变作用域,作用域还是在局部的代码块中
static用在全局变量中有什么用?
Static用在全局变量中,可以限制变量的访问范围,只能在本文件中访问
结构体和数组的区别?
数组:只能由多个相同类型的数据构成
结构体:可以由多个不同类型的数据构成
定义结构体的3种方式?
1>先定义类型再定义变量
2>定义类型的同时定义变量
3>定义类型的同时定义变量(省略类型名称
结构体的作用域?
1>定义在函数外面:全局有效(从定义的那行开始,一直到文件结尾)
2>定义在函数(代码块)内部:局部有效(从定义类型的那行开始,一直到代码块结束)
typedef的作用?
给已经存在的类型起一个新的名称
typedef的适用场合?
1> 基本数据类型
2> 指针
3> 结构体
4> 枚举
5> 指向函数的指针
递归的2个条件?
1>函数自己调用自己
2>有明确的返回值
编写c语言程序的4个步骤?
编辑->编译->链接->运行
c语言标识符的命名规范?
1>只能由26个英文字母的大小写、10个阿拉伯数字0~9、下划线_组成
2>严格区分大小写,同一段英文字母的大写和小写是两个不同的标识符
3>不能以数字开头
4>不可以使用关键字作为标识符
注释的作用?
1>被注释的代码不会参与运算
2>检查代码的作用
3>排除错误
signed和unsigned的取值范围?
Signed是-2的31次方到2的31次方-1
Unsigned是0到2的32次方-1
return的作用
1>退出函数2>返回一个具体的值给函数调用者
不写返回值的函数默认返回什么类型
int
32.数组元素的访问方式?
1>数组名[下标]
2>指针变量[下标]
3>*(p+i)
一个汉字在mac操作系统中占几个字节?
3个
指针p+1返回的是什么?
返回的时下一个元素的地址,具体取决于指针类型
结构体所占空间如何计算?
结构体所占空间是最大成员字节数的倍数
如何使宏失效?
#undef
外部变量整个程序都能用但是为什么还需要声明?
因为.c是单文件编译,要想使用变量还是需要声明否则提示没有定义变量
全局外部变量如何区分定义和声明?
变量前面有extern的是全局外部变量
没有extern的是全局内部变量
这种写法是否正确?
int test(int a,int b)
{
int a = 20;
int b = 30;
return a+b;
}
不正确,因为函数体内部不能定义和形参一样的变量
定义不声明函数是否报错?
报错
不定义不声明但是使用函数是否报错?
不报错,因为c语言语法是弱类型
函数是否可以同名?何种情况下可以同名?
函数一般不能同名,默认函数都是外部函数,如果是内部函数且在两个文件中可以同名
include后面的<>和””作用?
<>是只寻找c语言函数库的头文件,””是先在本文件中找,再在函数库中找
函数不写返回值默认是什么类型?
Int类型
函数返回值写void,在函数体内部还可以写return么?
可以写,但是不能写具体返回的数据,否则会报错
函数返回值为int的时候,可以不可以不写return?可不可以返回double类型的数据?
可以不写,也可以返回double类型的数据
46.printf中八进制,十进制,十六进制的占位符分别是什么?
%o 八进制
%i/%d 十进制
%
int的前缀(long) (long long) 代表什么意思?是否数据数据类型?分别代表多少个字节?
不属于数据类型,他们是类型说明符,long 8个字节,long long 8个字节
OC语言部分
-
OC中.h与.m文件的作用?
oc中类分为2个文件:.h声明类中的变量和方法;.m实现类中的方法;
-
什么是静态调用,什么是动态调用?
‘-‘表示动态调用;’+’静态调用常有的表现形式是【类名 静态方法】
3.OC对象中的变量关键字有哪些,作用域?
@public(全局可访问)
@protected(类内部和之类)(默认的可以省略不写)
@private(只能在内部访问)
@package 框架内可以访问
4.OC中的property和synthesize分别有什么用?
property用在.h文件synthesize用在.m文件中
可以自动生成set和get方法,property用来生成set方法,synthesize用来生成get方法
5.内存管理的范围
内存管理的范围:任何继承了NSObject的对象,对基本数据无效;
6.引用计数器在内存中几个字节
4个字节
7.retain,release对引用计数器的作用?
Retain对引用计数器+1.release引用计数器-1
8.如何获得对象的引用计数器?
可以给对象发送retainCOunt消息获得当前计数器值
9.分类的作用
分类是给类增加方法的,分类不能增加成员变量
10.什么是野指针
指向了僵尸对象的指针(指向了已经被回收了的内存空间)
11.什么是僵尸对象
已经被系统回收内存的对象
12.什么是野指针错误
野指针向僵尸对象发送消息
13.set方法的作用?
提供一个方法给外界设置成员变量值,可以在方法里面对参数进行相应过滤
14.set方法的命名规范
1> 方法名必须以set开头
2> set后面跟上成员变量的名称,成员变量的首字母必须大写
3> 返回值一定是void
4> 一定要接收一个参数,而且参数类型跟成员变量类型一致
5> 形参的名称不能跟成员变量名一样
15.get方法的规范?
返回对象内部的成员变量
16.get方法的命名规范
1> 肯定有返回值,返回值类型肯定与成员变量类型一致
2> 方法名跟成员变量名一样
3> 不需要接收任何参数
17.对象方法的特点?
1> 减号 – 开头
2> 只能由对象来调用
3> 对象方法中能访问当前对象的成员变量(实例变量)
18.类方法的特点?
1> 加号 + 开头
2> 只能由类(名)来调用
3> 类方法中不能访问成员变量(实例变量)
19.类方法的好处和适用场合?
1> 不依赖于对象,执行效率高
2> 能用类方法,尽量用类方法
3> 场合:当方法内部不需要使用到成员变量时,就可以改为类方法
20.是否允许类方法和对象方法同名?
可以允许类方法和对象方法同名
21.self的用途?
1> 谁调用了当前方法,self就代表谁
self出现在对象方法中,self就代表对象
self出现在类方法中,self就代表类
2> 在对象方法利用“self->成员变量名“访问当前对象内部的成员变量
[self 方法名]可以调用其他对象方法\类方法
22.什么是工具类?
基本没有任何成员变量,里面的方法基本都是类方法
23.继承的好处?
1> 抽取重复代码
2> 建立了类之间的关系
3> 子类可以拥有父类中的所有成员变量和方法
24.所有类的基类是什么?
NSObject
25.基协议是什么?
NSObject
26.什么叫重写?
子类重新实现父类中的某个方法,覆盖父类以前的做法
27.在xcode中添加注释的方法?
#pragma mark