C语言面试题库1-5

本文介绍了C语言面试中常见的问题,包括语法判断、位操作、操作系统位数判断、面向对象区别、变量交换方法、进程间通信方式以及函数和结构体的内存布局。通过实例解析了静态变量的影响、联合体和结构体的大小计算等知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么?

 int  n;

 if (n == 10) // 第一种判断方式

 if (10 == n) // 第二种判断方式

第二种,如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=

2.写出运行结果:

{// test2
    union V {
          structX {
                     unsigned chars1:2;
                     unsignedchar s2:3;
                     unsignedchar s3:3;
              } x;

              unsignedchar c;
    } v;

    v.c = 100;
    printf("%d", v.x.s3);

}

Unsigned char类型100的二进制表示为:01100100 v.x.s3为后三位,及100,因此答案为3.

3.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数

A1:

16位的系统下,

int i = 65536;

cout << i; // 输出0;

int i = 65535;

cout << i; // 输出-1;

32位的系统下,

int i = 65536;

cout << i; // 输出65536;

int i = 65535;

cout << i; // 输出65535;

A2:

int a = ~0;

if( a==65535 )

{

    cout<<"16 bit"<<endl;

}

else

{

    cout<<"32 bit"<<endl;

}

4.C和C++有什么不同?

       从机制上:c是面向过程的(但c也可以编写面向对象的程序);c++是面向对象的,提供了类。但是,
c++编写面向对象的程序比c容易

       从适用的方向:c适合要求代码体积小的,效率高的场合,如嵌入式;c++适合更上层的,复杂的;  llinux核心大部分是c写的,因为它是系统软件,效率要求极高。

       从名称上也可以看出,c++比c多了+,说明c++是c的超集;那为什么不叫c+而叫c++呢,是因为c++比
c来说扩充的东西太多了,所以就在c后面放上两个+;于是就成了c++

       C语言是结构化编程语言,C++是面向对象编程语言。
C++侧重于对象而不是过程,侧重于类的设计而不是逻辑的设计。

5.在不用第三方参数的情况下,交换两个参数的值

方法一:

#include<stdio.h>

void main()
{
        int i=60;
        int j=50;
        i=i+j;
        j=i-j;
        i=i-j;
        printf("i=%d\n",i);
        printf("j=%d\n",j);
}

方法二:
i^=j;
j^=i;
i^=j;

方法三:
// 用加减实现,而且不会溢出
a = a+b-(b=a)

6.进程间通信的方式有?

进程间通信的方式有 共享内存, 管道 ,Socket ,消息队列 ,等

7.下面的函数实现在一个固定的数上加上一个数,有什么错误,改正 

int add_n(int n)
{
  static int i=100;
  i+=n;
  return i;
}

答:因为static使得i的值会保留上次的值。去掉static就可了

8.下边代码输出结果

union a {

   int a_int1;
   double a_double;
   int a_int2;
};//8

typedef struct
{
   a a1;
   char y;
} b;//12

class c
{
   double c_double;
   b b1;
   a a2;

};//28

输出cout<<sizeof(c)<<endl;的结果?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值