【参考答案】
(1)引用被创建的同时必须被初始化(指针则可以在任何时候被初始化) 。
(2)不能有 NULL 引用,引用必须与合法的存储单元关联(指针则可以是NULL) 。
(3)一旦引用被初始化,就不能改变引用的关系(指针则可以随时改变所指的对象) 。
2.
{
p=(char *) malloc (100);
strcpy ( p,“hello world”);
}
int main( )
{
char * str =NULL;
getmemory ( str );
printf (“%s/n”, str );
free( str );
return 0;
} 会出现什么问题?
【标准答案】程序崩溃,getmemory中的malloc不能返回动态内存,即形参p是接收的str的地址,而在malloc的过程中,p的值发生了变化,而str的内容还是原来的NULL/
3.
strcpy (szstr,"0123456789");
产生什么结果?为什么?
【标准答案】
数组:数据顺序存储,固定大小;
链表:数据可以随机存储,大小可动态改变
5.
{
char aa [10];
printf (“%d”, strlen ( aa ));
}
【标准答案】sizeof()和初不初始化,没有关系,strlen()和初始化有关,打印结果值未知。
6.
{
char t:4;
char k:4;
unsigned short i:8;
unsigned long m;
};
问sizeof(A) = ?
【标准答案】8
7.
char str ;
short x;
int num ;
} ;
求sizeof(name1)?
【标准答案】8
8.
char str ;
int num ;
short x;
}; 求 sizeof (name2) ?
【标准答案】12
9.
wap( int*p1,int* p2 )
{
int *p;
*p = *p1;
*p1 = *p2;
*p2 = *p;
}
【标准答案】p为野指针
10.
【标准答案】(void*)ptr和(*(void**))ptr值是相同的
11.
int *ptr;
ptr = (int*)0x67a9;
*ptr = 0xaa55;
12.
(unsigned int *)0x100000= 1234; 那么要是想让程序跳转到绝对地址是 0x100000 去执行,应该怎么做?
*((void (*)( ))0x100000 ) ();
首先要将0x100000强制转换成函数指针,即:
(void (*)())0x100000
然后再调用它:
*((void (*)())0x100000)();
13.
【标准答案】 bool add (inta, intb,int *c)
{
*c=a+b;
return (a>0 && b>0&&(*c<a || *c<b) || (a<0 && b<0&&(*c>a|| *c>b)));
}
14.
【标准答案】防止该头文件被重复引用。
15.
1). 并行设备的硬件寄存器(如:状态寄存器)
2). 一个中断服务子程序中会访问到的非自动变量 (Non-automaticvariables)
3). 多线程应用中被几个任务共享 的变量
16.
【标准答案】对于#include <filename.h> ,编译器从标准库路径开始搜索filename.h ; 对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h。
17.
【标准答案】
(1)可以定义const 常量
(2)const可以修饰函数的参数、返回值,甚至函数的定义体。被 const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。
18.
constint a;
intconst a;
constint *a;
int * const a;
intconst * a const;
两个的作用是一样,a是一个常整型数。 第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。 第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的
19.
标准答案】Heap是堆,stack是栈。
Stack的空间由操作系统自动分配/释放
Heap上的空间手动分配/释放。
Stack空间有限,Heap是很大的自由存储区
C 中的 malloc 函数分配的内存空间即在堆上 ,C++ 中对应的是 new 操作符。
程序在编译期对变量和函数分配内存都在栈上进行 , 且程序运行过程中函数调用时参数的传递也在栈上进行。
20.
【标准答案】程序的局部变量存在于栈(stack)中,全局变量存在于静态数据区 中,动态申请数据存在于堆(heap)中。
21.
【 标准答案 】 没有回收垃圾资源。
22.
【标准答案】队列先进先出,栈后进先出。
23.
【 参考答案 】#defineSECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
24.
25.
【标准答案】#defineMin(X, Y) ((X)>(Y)?(Y):(X))//结尾没有;
26.
#defineSQUARE(a)((a)*(a))
int a=5;
int b;
b=SQUARE(a++);
【标准答案】宏在预编译时会以替换的形式展开,仅仅会替换。涉及到宏的地方,不要用++ --,标准中对此没有规定,因此最终结果将会依赖于不同的编译器。执行程序的答案可能是25、也有可能是36。
27.
【标准答案】
#define BIT3 (0x1 <<3)
static inta;
void set_bit3(void) voidclear_bit3(void)
{ {
} }
28.
【 标准答案 】 提示编译器对象的值可能在编译器未监测到的情况下改变。