C语言面试指南:变量、函数与数据类型

需积分: 9 3 下载量 42 浏览量 更新于2024-07-22 收藏 40KB DOC 举报
“ISO面试题.doc”主要涵盖了C语言基础、变量、作用域、内存管理、输入/输出函数、编译链接过程、运算符、字符串、指针类型以及结构体与数组的相关知识,旨在帮助面试者准备iOS相关的技术面试。 1. **查看变量地址**:在C语言中,可以使用`&`运算符获取变量的地址。例如,`char a='A'; int b=66;`后,`printf("a的地址%d\n", &a);`和`printf("b的地址%d\n", &b);`分别会打印出变量a和b的内存地址。 2. **`printf`与`puts`的区别**:`printf`函数更为灵活,可以输出多个字符串,并支持格式化输出;而`puts`只能输出一个字符串,并且在输出后会自动添加一个换行符。 3. **`scanf`与`gets`的区别**:`scanf`在读取字符串时遇到空格、制表符或回车会停止,不安全的原因在于可能会导致缓冲区溢出。`gets`则会读取到遇到换行符为止,因此在处理用户输入时容易造成安全问题,不推荐使用。 4. **变量作用域**:根据定义位置,变量可分为局部变量(在函数或代码块内定义)和全局变量(在函数外部定义)。局部变量的作用域仅限于定义它的代码块,生命周期从定义开始到代码块结束。全局变量的作用域从定义开始到文件结束,生命周期从程序开始到结束。 5. **数组名与指针的区别**:数组名实际上是一个指向数组首元素的常量指针,其值不可变;而指针是一个变量,可以存储不同地址。 6. **编译器与链接器**:没有函数定义仅在编译阶段通过,但在链接阶段会报错,因为链接器需要找到函数的实际实现。 7. **函数声明与定义**:函数可以多次声明,但只能在一个地方定义。重复定义会导致链接错误。 8. **C语言运算符**:包括算术运算符、逻辑运算符、关系运算符、三目运算符、位运算符和赋值运算符。 9. **字符串结束标记**:字符串以`\0`作为结束标志。 10. **指针在64位编译器下的字节数**:在64位编译器下,指针通常占用8个字节。 11. **指针类型**:指针类型很重要,因为不同类型的指针在存取数据时会按照相应类型占用的字节数进行操作。 12. **局部变量的特性**:局部变量在定义时没有固定初始值,生命周期始于定义,终于所在代码块结束。 13. **全局变量的特性**:全局变量默认初始值为0,生命周期始于程序启动,终于程序结束。 14. **`static`关键字**:用于局部变量时,变量在程序首次执行到定义处时初始化并保持其值,但作用域仍限于局部。用于全局变量时,限制其为内部链接,只在当前文件可见。 15. **结构体与数组的区别**:数组由相同类型的数据组成,结构体则可以包含不同类型的数据成员。 这些知识点涵盖了C语言的基础,对于iOS开发者来说,理解和掌握这些是必不可少的,因为iOS应用开发底层基于Objective-C和Swift,两者都与C语言有深厚的联系。