野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 16494|回复: 2

C语言面试笔记(三)

[复制链接]
发表于 2016-9-8 09:05:57 | 显示全部楼层 |阅读模式
29.用变量a给出下面的定义:
(1)一个整型数:int a;
(2)一个指向整型数的指针:int *a;
(3)一个指向指针的指针,它指向的指针是指向一个整型数:int **a;
(4)一个有10个整型数的数组:int a[10];
(5)一个有10个指针的数组,指针都是指向整型数:int *a[10];
(6)一个指向数组的指针,该数组有10个整型数:int (*a)[10];
(7)一个指向函数的指针,该函数有一个整形参数并返回一个整型数:int (*a)(intb);
(8)一个有10个指针的数组,指针指向一个函数,函数有一个整形参数并返回一个整型数:
int (*a[10])(int b);

30.(void *)ptr和(*(void**))ptr的结果是否相同?其中ptr为同一个指针
——(void *)ptr 和(*(void**))ptr 值是相同的

31.带参宏与带参函数的区别(至少说出5点)?


32.用两个栈实现一个队列的功能?要求给出算法和思路!
      设2个栈为A,B, 一开始均为空 入队:将新元素push入栈A; 出队1)判断栈B 是否为空;(2)如果不为空,则将栈A中所有元素依次pop 出并push到栈B;(3)将栈B 的栈顶元素pop 出;

33.在C++程序中调用被C编译器编译后的函数,为什么要加extern “C”?
      C++ 语言支持函数重载,C 语言不支持函数重载。函数被C++ 编译后在库中的名字与 C 语言的不同。假设某个函数的原型为:void foo(intx,int y),该函数被c编译器编译后在库中的名字为_foo,而c++编译器则会产生像_foo_int_int之类的名字。

34..main(){int a[5]={1,2,3,4,5};int * ptr=(int*)(&a+1);printf(“%d,%d”,*(a+1),*(ptr-1));}请问输出:2,5  &a是数组指针,其类型为 int (*)[5]; 而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同。 a是长度为5的int数组指针,所以要加5*sizeof(int) 所以ptr实际是a[5] 但是prt与(&a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*)
35.一语句实现x是否为2的若干次幂的判断。
return x&(x-1)?1:0;;//返回0,则是2的若干次方
36.编写一个检查系统的大小端                                                
      intchecksys(){ union check{ int i; char c; }ret; ret.i=1; return ret.c }

37.computer”中长度为3的子串有多少个:字串是字符串中任意长度的连续字符构成的序列—       —6个(com/omp/mpu/put/ute/ter)

38.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题)          ——#defineSECONDS_PER_YEAR (60 * 60 * 24 * 365)UL

39.char* const p;   char const * p   const char *p   上述三个有什么区别:
(考察const就近原则)char * const p; //常量指针,p的值不可以修改   
char const * p;//指向常量的指针,指向的常量值*p不可以改
const char *p; //和char const *p     
--问题归结为 <type> const  *p 和 <type>* const p 区别;只需要看const 后是什么类型;后者const 修饰的是*p,他是p所指向的内容为read-only; 而前者const 修饰的是p, 即指针变量p本身为 read-only;
       --从内存的角度来看(本人已测试验证):
<type>*const p   变量p存放在read-only数据段
     p为常量指针,p只用于读操作, 告诉编译器,p仅用做右值;
       const<type> *p   变量p存放在栈区;
*p不一定为常量区,但*p只用于读操作,告诉编译器*p仅用作右值;

40.每个变量都有两个值与其相关联:
(1)变量的数据值,储存在某个内存地址中,又叫做右值(可认为是被读取的值)。(2)变量的地址值,即储存数据值的内存地址,又叫做对象的左值。

41.Internet采用哪种网络协议?该协议的主要层次结构?
TCP/IP,应用层/传输层/网络层/数据链路层/物理层

42.Internet物理地址和IP地址转换采用什么协议?
ARP (Address Resolution Protocol)(地址解析协议)

43.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。

44.-1,2,7,28,,126请问28和126中间那个数是什么?为什么?
       规律是n^3-1(当n为偶数0,2,4)
      n^3+1(当n为奇数1,3,5)——63

45.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?    ——c用宏定义,c++用inline

46..软件测试都有那些种类?
       ——黑盒:针对系统功能的测试   白盒:测试函数功能,各函数接口

47.确定模块的功能和模块的接口是在软件设计的那个队段完成的?
概要设计阶段
48.交换两个变量的值,不使用第三个变量:有两种解法,一种用算术算法,一种用^(异或)
a = a + b;b = a - b;a = a - b(这种缺点就是a,b都较大时,a=a+b越界);        or    a= a^b;// 只能对int,char..b = a^b;a = a^b;或a ^= b ^= a;
49.c和c++中的struct有什么不同?
      c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private


回复

使用道具 举报

发表于 2016-9-8 10:10:21 | 显示全部楼层
我也要学楼主把自己的学习记录下来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-8 10:23:07 | 显示全部楼层
魚丸粗麵 发表于 2016-9-8 10:10
我也要学楼主把自己的学习记录下来

这是很久以前积累的了,因为一直在火哥论坛看《每日一题》,不知从什么时候开始积累的,总结归档了一下。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-14 20:53 , Processed in 0.034792 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表