C++/C面试题

include <math.h> 和 #include “math.h” 有何区别?

#include <math.h>表示编译器从标准库路径查找math.h文件。
#include “math.h”表示编译器先查找工程路径,如果没有找到math.h文件,再查找标准库路径。
也就是说 :如果引用C或C++标准库中的头文件,使用第一种形式;引用自定义的头文件,使用第二种形式。

定义一个宏,用于表示一年有多少秒,忽略闰年的情况

#define SECOND_PER_YEAR (606024*365UL)
切记宏定义末尾不需要分号

解释堆和栈的区别?

堆和栈实际是一块物理内存,堆主要用来动态分配内存,较大的数据需要在堆中分配。从堆栈内存的低端向上分配; 而栈主要存储函数参数、返回值和局部变量,是从堆栈内存的高端向下分配; 堆是动态分配,比如用new分配,在使用后需要手工释放。栈属于静态分配,在对象使用后无序手动释放内存
在这里插入图片描述

delete与delete[]的区别是什么?

delete只调用一次析构函数,通常用于释放单个对象的堆空间。 delete[]会调用数组中每一个元素(类对象)的析构函数,用于释放对象数组的堆空间。

当 a=2 、b=4、c=6、d=8时编程求 a&c、 b|d、 a^d、 ~a的值

在这里插入图片描述

给定 short a 计算它有多少bit 是1

#include <stdio.h>
main()
{
    
    
	 unsigned short a;
	 int i, z = 0;
	 printf("please input a number :\n");
	 scanf("%d",&a); //输入一个八进制数
	 for(i = 1; i <= 16; i++)
	 {
    
    
		if(a&1)
			z++;
		a>>=1;  //右移一位
	 }
	 printf("The counts is : %d\n",z);
}

给定整型变量a,写两段代码,第一个设置a的bit3, 第二个清除a的bit3。 在以上两个操作中,要保持其他位不变

设置a的bit3
void set_bit3(void)
{
    
    
a |= (1<<3);  //将a和1左移3位后的结果进行或运算,并将结果赋给a
}
清除a的bit3
int a;
{
    
    
a &= ~(1<<3);  //1左移3位并取反,a与其结果进行与运算,将最终结果赋给a
}

猜你喜欢

转载自blog.csdn.net/weixin_44856544/article/details/113190239