您的位置:首页 > 其它

C重点基础自测第一部分(精华)

2016-06-05 17:24 148 查看
*答案在末尾!
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说明,因为每次对它的读写都可能由不同意义;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  基础 语言 知识