22
2020
02

do……while和while……do有什么区别?

答:前一个循环一遍再判断,后一个判断以后再循环 
22
2020
02

语句for( ;1 ;)有什么问题?它是什么意思?

答:和while(1)相同。
22
2020
02

全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?

答:可以,在不同的C文件中以static形式来声明同名全局变量。   可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错 。
22
2020
02

如何引用一个已经定义过的全局变量?

答:extern。  可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。          头文件引用在编译期间报错,extern方式在连接期间报错。
22
2020
02

局部变量能否和全局变量重名?

答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "。  局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 
21
2020
02

简述 strcpy、sprintf 与 memcpy 的区别

三者主要有以下不同之处:(1) 操作对象不同,strcpy 的两个操作对象均为字符串,sprintf 的操作源对象可以是多种数据类型,目的操作对象是字符串,memcpy 的两个对象就是两个任意可操作的内存地址,并不限于何种数据类型。(2) 执行效率不同,memcpy 最高,strcpy 次之,sprintf 的效率最低。(3) 实现功能不同,strcpy 主要实现字符串变量间的拷贝,sprintf 主要实现其他数据类型格式到字符串的转化,memcpy 主要是内存块间的拷贝。说明:strcpy、s
21
2020
02

简述 C、C++程序编译的内存分配情况

C、C++中内存分配方式可以分为三种:(1) 从静态存储区域分配:内存在程序编译时就已经分配好,这块内存在程序的整个运行期间都存在。速度快、不容易出错,因为有系统会善后。例如全局变量,static 变量等。(2) 在栈上分配:在执行函数时,函数内局部变量的存储单元都在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3) 从堆上分配:即动态内存分配。程序在运行的时候用 malloc 或 new 申请任意大小的内存,程序员自己
21
2020
02

a 和&a 有什么区别

请写出以下代码的打印结果,主要目的是考察 a 和&a 的区别。#include<stdio.h> void main( void ) {   int a[5]={1,2,3,4,5};   int *ptr=(int *)(&a+1);  printf("%d,%d",*(a+1),*(ptr-1));   return; } 输出结果:2
21
2020
02

一个指针可以是 volatile 吗

可以,因为指针和普通变量一样,有时也有变化程序的不可控性。常见例:子中断服务子程序修改一个指向一个 buffer 的指针时,必须用 volatile 来修饰这个指针。说明:指针是一种普通的变量,从访问上没有什么不同于其他变量的特性。其保存的数值是个整型数据,和整型变量不同的是,这个整型数据指向的是一段内存地址。
21
2020
02

写一个“标准”宏 MIN

#define min(a,b)((a)<=(b)?(a):(b))注意:在调用时一定要注意这个宏定义的副作用,如下调用:((++*p)<=(x)?(++*p):(x)。p 指针就自加了两次,违背了 MIN 的本意。
21
2020
02

C中的 malloc 和C++中的 new 有什么区别

malloc 和 new 有以下不同:(1) new、delete 是操作符,可以重载,只能在 C++中使用。(2) malloc、free 是函数,可以覆盖,C、C++中都可以使用。(3) new 可以调用对象的构造函数,对应的 delete 调用相应的析构函数。(4) malloc 仅仅分配内存,free 仅仅回收内存,并不执行构造和析构函数(5) new、delete 返回的是某种数据类型指针,malloc、free 返回的是 void 指针。注意:malloc 申请的内存空间要用 fre
21
2020
02

C 语言的关键字 static 和 C++ 的关键字 static 有什么区别

在 C 中 static 用来修饰局部静态变量和外部静态变量、函数。而 C++中除了上述功能外,还用来定义类的成员变量和函数。即静态成员和静态成员函数。注意:编程时 static 的记忆性,和全局性的特点可以让在不同时期调用的函数进行通信,传递信息,而 C++的静态成员则可以在多个对象实例间进行通信,传递信息。
21
2020
02

sizeof 和 strlen 的区别

sizeof 和 strlen 有以下区别:1 sizeof 是一个操作符,strlen 是库函数。2 sizeof 的参数可以是数据的类型,也可以是变量,而 strlen 只能以结尾为‘\0‘的字符串作参数。3 编译器在编译时就计算出了 sizeof 的结果。而 strlen 函数必须在运行时才能计算出来。并且 sizeof 计算的是数据类型占内存的大小,而 strlen 计算的是字符串实际的长度。4 数组做 sizeof 的参数不退化,传递给 strlen 就退化为指针了。注意:有些是操作符
21
2020
02

写出 bool 、int、 float、指针变量与“零值”比较的 if 语句

bool 型数据: if( flag ) {   A; } else {   B; } int 型数据: if( 0 != flag ) {   A; } else {   B; } 指针型数: if( NULL == flag ) {   A;&n
21
2020
02

变量的声明和定义有什么区别

为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。