某公司笔试题

1. 执行完C++程序中的下列3条语句后,c指向( )。

 

int a, b,*c=&a;

int *p=c;

 p=&b;

 

A.p

B.c

C.b

D.a

 

解析:语句“int a,b,*c=&a;”执行完后,指针c存放变量a的地址。

语句“int*p =c;”执行完后,指针p存放变量a的地址。

语句“p=&b;”执行完后,指针p存放变量b的地址,但是指针c仍然存放变量a的地址。

语句“p=&b;”只是对指针p进行了重新赋值,但并没有改变指针c的值。

故选择D

 

2. 下列程序的运行结果是()

 char ss[]="0123456789";

 printf("%d, %d\n",sizeof(ss), sizeof (*ss)):

A. 4 ,1    B  11, 1      C.  11, 4    D.4,4 

解析:

答案是 B.  

sizeof 函数返回的是参数类型占用的字节数, ss是字符串数组的首指针,*ss相当于ss[0],这个ss[0]的类型是char型,sizeof(*ss)相当于sizeof(char) 会给出char 类型占用的字节数为1。

通过sizeof可以得到ss数组占用多少字节,比如sizeof(ss);会得到整个ss数组占用了11个字符位置。

 

3. 当x=9999时,如下函数的输出结果为()

   int func(x)

 {  int  countx=0;

  while(x)

   {

    countx ++;

     x=x&(x-1);

    }

 return countx;

}

A. 6    B.  7   C.  8    D. 9

解析:

该函数的作用是统计9999的二进制数值中有多少个1的函数,且有9999=9*1024+512+256+15

9*1024中含有1的个数为2,512中含有1的个数为1;256中含有1的个数为1,15中含有1的个数为4;故共有1的个数为8,结果为8

 

4. 内核不包括的子系统是()

A. 进程管理系统  B. 内存管理系统  C. I/O管理系统  D.  硬件管理系统

解析:

答案是D。  一般意义下,内核分为  进程管理系统、内存管理系统、I/O管理系统和文件管理系统 等四个子系统。

 

5. 以下关于C语言中typedef的叙述中错误的是()

A. 用typedef可以定义各种类型名,但不能用来定义变量

B. 用typedef 可以增加新的类型

C. 用typedef只是将已有的类型用新的标识符来代表

D. 使用typedef有利于程序的通用和移植

答案是:B

 

 

6.  有关构造函数说法不正确的是()

A. 构造函数与类名相同

B. 构造函数在声明类变量时自动执行

C. 构造函数无任何类型

D. 构造函数有且只有一个

答案: D

 

7. C语言非static的全局变量和非static的局部变量在内存中是否有区别? 如果有,是什么区别。
答: static局部变量只被初始化一次,下一次依据上一次结果值;static局部变量在程序结束时才被销毁,而普通局部变量在其作用域结束时就被销毁了。

8.  int *(*ptr)(), 则以下叙述中正确的是()

A. ptr  是指向一维数组的指针变量

B. ptr 是指向int型数据的指针变量

C. ptr是指向函数的指针,该函数返回一个int型数据

D. ptr是指向函数的指针,该函数的返回值是指向int 型数据的指针

 答案: 个人感觉应该是D,具体的分析如下

首先要理解C语言生命的优先级规则

A    声明从它的名字开始读取,然后按照优先级顺序依次读取。

B    优先级从高到低依次是

      B.1     声明中被括号括起来的那部分

      B.2    后缀操作符:

              括号()表示这是一个函数,而方括号[]表示这是一个数组。。

      B.3  前缀操作符: 星号*表示  “指向...的指针”。

C   如果const 和(或) volatile 关键字的后面紧跟类型说明符(如int, long等),那么它作用于类型说明符。在其他的情况下,const和volatile关键字作用于它左边紧邻的指针星号

 

比如如下的例子: char * const *(*next)();

这个声明表示 "next是一个指针,它指向一个函数,该函数返回另一个指针,该指针指向一个类型为char的常量指针"

 

9. 列举常见的进程间的通信方式?

答: 现在Linux使用的进程间通信方式包括如下

   1. 管道(pipe)和有名管道(FIFO)

   2. 信号(signal)

   3. 消息队列

   4. 共享内存

   5. 信号量

   6. 套接字(socket)

 

 10. 不要使用库函数strcat();自行编程实现str_append()功能:已知两个字符串,将这两个字符串拼接起来作为返回值。例如该函数输入函数参数为"Hello"和"World",那么返回值就是"HelloWorld".

  

   

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值