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

*答案在末尾!

站在用户的角度思考问题,与客户深入沟通,找到丽水网站设计与丽水网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、成都网站建设、企业官网、英文网站、手机端网站、网站推广、域名注册网站空间、企业邮箱。业务覆盖丽水地区。

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说明,因为每次对它的读写都可能由不同意义;


文章题目:C重点基础自测第一部分(精华)
URL分享:http://ybzwz.com/article/pogpgi.html