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;
}