【王道笔试题】笔试面试要点(持续更新中!!!!)
2017-11-19 22:57
232 查看
一、数组
1、下列程序执行后的结果是()(2012 中兴)
解题思路:
p 是一个指向 int 型的指针 p[i] = *(p+i),故数组 a 依次被初始化为 {1,2,3,4,5,6,7,8,9}, 故 a[1][2] = 6 .。 此题是将二维数组当做一维数组来初始化,由于二维数组在内存中是连续存放的,故是可行的。
输出结果是:
2、针对 int a[10];以下表达式不可以表示为 a[1] 的地址的是 ()? (2013 腾讯)
A、a + sizeof(int) B、&a[0]+1;
C、(int*)&a+1; D、(int*)((char*)&a+sizeof(int))
解析:
选 A 。sizeof(int) 4 , A是指向数组首元素的指针,指向的元素类型为 int ,每加 1 ,跳过 4 个字节。
&a[0] 位首元素的地址,故也是指向首元素的指针,即 &a[0] 等价于 a;
&a 为指向数组的指针,与 a 的类型不同 ( &a 类型为 int (*)[10]),但指向的单元相同;则 a + 4 指向 a[4];
B 为 a+1 正确;
C 中,将 &a 强制转换为 int * 类型,则执行 +1 跳过 一个 int 的大小(4),指向 a[1];
D 中将 &a转换为 char * 类型,则 +1 跳过一个 char 的大小 (1),故指向 a[1] 的首字节需要 +4,然后转换为 int* 类型,正确。
二、字符串
1、请写出 strcpy 和 memcpy 的别?(2012 海康视威)
解析:
strcpy 和 memcpy 都是标准 C库函数,主要有以下三方面的区别:
(1)、复制的内容不同。strcpy 只能复制字符串,而 memcpy 能复制任意内容,例如:字符串数组、整型、结构体、类等。strcpy 只用于字符串的复制,并且它不仅会复制字符串的内容,而且还会复制字符串尾的 '\0'。memcpy 对于复制的内容没有限制,因此用途更广。
(2)、复制的方法不同。strcpy 不需要指定长度,它遇到被复制字符串的结束符 '\0' 时才结束,所以容易溢出。 memcppy 根据第三个参数可以指定复制的长度。因此比较安全。
(3)、用途不同。通常在复制字符串时用 strcpy,而需要复制其他类型数据时一般需要用 memcpy。
1、下列程序执行后的结果是()(2012 中兴)
#include<stdio.h> int main(void) { int a[3][3]; int i; int j; int *p = &a[0][0]; for( i=0;i<9;i++) { p[i]=i+1; } printf("%d \n",a[1][2]); for( i = 0;i< 3;i++) { for( j=0;j<3;j++) { printf("%d ",a[i][j]); } printf("\n"); } return 0; }
解题思路:
p 是一个指向 int 型的指针 p[i] = *(p+i),故数组 a 依次被初始化为 {1,2,3,4,5,6,7,8,9}, 故 a[1][2] = 6 .。 此题是将二维数组当做一维数组来初始化,由于二维数组在内存中是连续存放的,故是可行的。
输出结果是:
2、针对 int a[10];以下表达式不可以表示为 a[1] 的地址的是 ()? (2013 腾讯)
A、a + sizeof(int) B、&a[0]+1;
C、(int*)&a+1; D、(int*)((char*)&a+sizeof(int))
解析:
选 A 。sizeof(int) 4 , A是指向数组首元素的指针,指向的元素类型为 int ,每加 1 ,跳过 4 个字节。
&a[0] 位首元素的地址,故也是指向首元素的指针,即 &a[0] 等价于 a;
&a 为指向数组的指针,与 a 的类型不同 ( &a 类型为 int (*)[10]),但指向的单元相同;则 a + 4 指向 a[4];
B 为 a+1 正确;
C 中,将 &a 强制转换为 int * 类型,则执行 +1 跳过 一个 int 的大小(4),指向 a[1];
D 中将 &a转换为 char * 类型,则 +1 跳过一个 char 的大小 (1),故指向 a[1] 的首字节需要 +4,然后转换为 int* 类型,正确。
二、字符串
1、请写出 strcpy 和 memcpy 的别?(2012 海康视威)
解析:
strcpy 和 memcpy 都是标准 C库函数,主要有以下三方面的区别:
(1)、复制的内容不同。strcpy 只能复制字符串,而 memcpy 能复制任意内容,例如:字符串数组、整型、结构体、类等。strcpy 只用于字符串的复制,并且它不仅会复制字符串的内容,而且还会复制字符串尾的 '\0'。memcpy 对于复制的内容没有限制,因此用途更广。
(2)、复制的方法不同。strcpy 不需要指定长度,它遇到被复制字符串的结束符 '\0' 时才结束,所以容易溢出。 memcppy 根据第三个参数可以指定复制的长度。因此比较安全。
(3)、用途不同。通常在复制字符串时用 strcpy,而需要复制其他类型数据时一般需要用 memcpy。
相关文章推荐
- Android系统基础面试笔试题积累,持续更新。。。。
- nginx面试要点--持续更新中
- Hadoop基础教程-第14章 大数据面试笔试题汇总(持续更新)
- 最近遇到的一些笔试面试题目(持续更新中。。)
- 前端笔试,前端面试——各种小姿势(持续更新,欢迎补充!)
- Java工程师面试题,整理自网络与博主各种笔试面试,持续更新
- C++ 常见面试和笔试坑点总结(持续更新)
- JAVA面试笔试汇总--(持续更新)
- Android 2018年春季面试/笔试面经(持续更新)
- 笔试面试经典题目及解答——持续更新中
- iOS面试前的一些准备(持续更新)
- 关于面试中的一二 ------------Foundation 持续更新
- 笔试总结——c、c++【持续更新】
- 项目经理面试中可能遇到的问题(持续更新)
- 笔试题目探究(持续更新)
- 面试笔试题刷题总结 不断更新中。。。。。。
- 【猿小白】常见面试问题汇总~~~持续更新~~~直到拿到心仪的offer
- 前端笔试题及资料集锦(一)(持续更新....)
- 项目经理面试中可能遇到的问题(持续更新)
- JavaScript笔试题(持续更新)