*答案在末尾!
1、写出bool、float、指针变量与“零值”比较的if语句;
2、在linux32位操作系统下,计算sizeof的值;
char str[] = “heoll”;
char* p = str;
int n;
void fun(int arr[])
{}
void* ptr = malloc(168);
sizeof(str);sizeof(p);sizeof(n);sizeof(arr);sizeof(ptr);
3、给出下列的定义
a、一个有10个指针的数组,该指针的是指向一个整型的;
b、一个指向有10个整型数组的指针;
c、一个指向函数的指针,该函数有一个整数参数并返回整型;
d、一个有10个指针的数组,指针指向一个函数,该函数有一个整型参数并返回整型;
4、以下代码有什么问题?
int main()
{
char a;
char* str = &a;
strcpy(str,“hello”);
printf(str);
return 0;
}
5、以下代码有什么问题?
str = “aaa”;
printf("%s\n",str);
str[0] = 'A';
printf("%s\n",str);
6、C/C++中的struct有什么不同?
7、以下代码有什么问题?
void getmetmemory(char *p)
{
p = (char*)malloc(100);
strcpy(p,"hello world");
}
int main()
{
char* str = NULL;
getmemory(str);
printf("%s\n"str);
free(str);
return 0;
}
8、以下代码会产生什么结果,为什么?
char str[10];
strcpy(str."0123456789");
9、volatile关键字的作用;
/*************************************************************
答案
/*************************************************************
1、一般规范的:
bool:if(falg) if(!flag)
float:const float EPS = 0.000001; if((x >= -EPS )&&(x <= EPS))
指针:if(p == NULL) if(p != NULL)
2、6、4、4、4、4;
3、int* a[10]; int(*a)[10]; int (*a)(int); int (*a[10])(int);
4、没有为str分配内存空间,将一个字符串拷贝到一个字符变量指针所指地址。可以出预期结果
但是越界进行读写导致程序崩溃。
5、“aaa”是字符串常量,str是指针,指向这个字符串常量,所以声明str的时候就有问题了。
又const char* str = “aaa”;是常量对str[0]的赋值操作是不合法的。
6、重要区别是C中struct不可以包含成员函数,而在C++中它就是一个类只是默认是public的罢了。
7、p传给getmemory函数的是p的一个副本,在函数体为p开辟了空间超了函数体p还给还给操作系统了,
p所指向的内存空间没有释放导致内存泄漏。
8、str越界写入数据,会导致段错误。
9、一个定义为volatile的变量表示该变量会经常被改变。多用于下面三个地方
(1)、中断服务程序中修改的供其它程序检测的变量需要加volatile;
(2)、多任务环境下各任务间共享的标志应该加volatile;
(3)、存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。