一、请填写BOOL , float, 指针变量 与“零值”比较的 if 语句。
提示:这里“零值”可以是0, 0.0 , FALSE或者“空指针”。例如 int 变量 n 与“零值”比较的 if 语句为:
if ( n == 0 ) if ( n != 0 )
以此类推。
请写出 BOOL flag 与“零值”比较的 if 语句: 答:if ( flag ) If ( !flag )
|
请写出 float x 与“零值”比较的 if 语句: 答:const float EPSINON = 0.01; if ((x >= -EPSINON)&&(x <= EPSINON ) )
|
请写出 char *p 与“零值”比较的 if 语句: 答:if ( p == NULL ) If( p != NULL )
|
二、以下为Windows NT下的32位C++程序,请计算sizeof的值
char str[] = “Hello” ; char *p = str ; int n = 10; 请计算 sizeof (str ) = 6
sizeof ( p ) = 4
sizeof ( n ) = 4 | void Func ( char str[100]) { 请计算 sizeof( str ) = 4 }
|
void *p = malloc( 100 ); 请计算 sizeof ( p ) = 4
|
三、简答题
1、const 有什么用途?(请至少说明两种)
5、多线程编程,在一个线程中用Sleep()延时和用循环来延时有何区别?
void GetMemory(char *p) { p = (char *)malloc(100); } void Test(void) { char *str = NULL; GetMemory(str); strcpy(str, "hello world"); printf(str); }
请问运行Test函数会有什么样的结果? 答:可能是乱码,程序崩溃 因为GetMemory不能传递动态内存
| char *GetMemory(void) { char p[] = "hello world"; return p; } void Test(void) { char *str = NULL; str = GetMemory(); printf(str); }
请问运行Test函数会有什么样的结果? 答:可能结果是乱码 因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新的内容不可知 |
Void GetMemory(char **p, int num) { *p = (char *)malloc(num); } void Test(void) { char *str = NULL; GetMemory(&str, 100); strcpy(str, "hello"); printf(str); } 请问运行Test函数会有什么样的结果? 答:输出hello但有内存泄漏
|