面试题目

1、static 有什么用途?(请至少说明两种)

(1)被static修饰的函数,只在本文件有效,对外部文件不可见。

(2)被static修饰的全局变量和局部变量的生命周期为整个程序运行周期。

2、全局变量和局部变量在内存中是否有区别?如果有,是什么区别?

(1)生命周期不同。

全局变量的生命周期为整个程序的生命周期,局部变量的生命周期为该语句块内(static修饰的局部变量除外)。

(2)对外访问控制权限不同

全局变量的访问控制权限对整个程序均可见,局部变量的访问控制权限只在该函数体内。

3、写出 float x 与“零值”比较的 if 语句。

??

4、Windows 32 位系统下, C++程序,请计算 sizeof 的值

char str[] = “hello world”
char *p = str ;
int n = 10;

请计算

sizeof (str ) = 12
sizeof ( p ) =  4
sizeof ( n ) = 4
void *p = malloc( 100 );

请计算

sizeof ( p ) = 4
typedef struct
{
int nFuncCode;
short nProperty;
int nCtlCode;
}stInfo;
stInfo aInfo;

请计算

sizeof (aInfo ) = 12

5、回答下面的问题

(1) 头文件中的 ifndef/define/endif 干什么用?

预处理

在进行预处理阶段,根据条件进行相应代码的处理。也可以用在多行注释上。

(2) 在 C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明?

这样可以使用gcc编译器编译代码,而不是g++。增加代码的可移植性。

6、回答下面的问题

(1)  Void GetMemory(char **p, int num)
{
	 *p = (char *)malloc(num);
}
void Test(void)
{
	char *str = NULL;
	GetMemory(&str, 100);
	strcpy(str, "hello");
	printf(%s\n”, str);
}

请问运行 Test 函数会有什么样的结果?
答:hello

(2) void Test(void)
{
	char *str = (char *) malloc(100);
	strcpy(str, “hello”);
	free(str);
	if(str != NULL)
	{
		strcpy(str, “world”);
		printf(%s\n”, str);
	}
}

请问运行 Test 函数会有什么结果?
答:段错误。

(3) char *GetMemory(void)
	{
		char p[] = "hello world";
		return p;
	}
	void Test(void)
	{
		char *str = NULL;
		str = GetMemory();
		printf(%s\n”, str);
	}

请问运行 Test 函数会有什么样的结果?
答:结果未知,在不同的操作系统处理的会不同。变量接收栈区变量的函数返回值。

7、程序什么时候应该使用线程,什么时候单线程效率高。

答:当需要进行同时访问共享资源的时候,可以考虑使用线程。

8、C++中什么数据分配在栈或堆中,New 分配数据是在近堆还是远堆中?

答:??

9、int i=10, j=10, k=3; k*=i+j; k 最后的值?

答:60

#include <stdio.h>

int main(int argc, char * argv [ ])
{
    int i=10, j=10, k=3;
    k*=i+j;
    printf("k=%d\n", k);
    
    return 0;
}

在这里插入图片描述

10、嵌入式系统可能用到这样的场景,即要求设置一绝对地址为 0x67a9 的整型变量的值为0xaa66,怎么设置?

((int)0x67a9) = 0xaa66

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值