29.用变量a给出下面的定义: (1)一个整型数:int a; (2)一个指向整型数的指针:int *a; (3)一个指向指针的指针,它指向的指针是指向一个整型数:int **a; (4)一个有10个整型数的数组:int a[10]; (5)一个有10个指针的数组,指针都是指向整型数:int *a[10]; (6)一个指向数组的指针,该数组有10个整型数:int (*a)[10]; (7)一个指向函数的指针,该函数有一个整形参数并返回一个整型数:int (*a)(intb); (8)一个有10个指针的数组,指针指向一个函数,函数有一个整形参数并返回一个整型数: int (*a[10])(int b);
30.(void *)ptr和(*(void**))ptr的结果是否相同?其中ptr为同一个指针 ——(void *)ptr 和(*(void**))ptr 值是相同的
31.带参宏与带参函数的区别(至少说出5点)?
32.用两个栈实现一个队列的功能?要求给出算法和思路! 设2个栈为A,B, 一开始均为空 入队:将新元素push入栈A; 出队1)判断栈B 是否为空;(2)如果不为空,则将栈A中所有元素依次pop 出并push到栈B;(3)将栈B 的栈顶元素pop 出;
33.在C++程序中调用被C编译器编译后的函数,为什么要加extern “C”? C++ 语言支持函数重载,C 语言不支持函数重载。函数被C++ 编译后在库中的名字与 C 语言的不同。假设某个函数的原型为:void foo(intx,int y),该函数被c编译器编译后在库中的名字为_foo,而c++编译器则会产生像_foo_int_int之类的名字。
34..main(){int a[5]={1,2,3,4,5};int * ptr=(int*)(&a+1);printf(“%d,%d”,*(a+1),*(ptr-1));}请问输出:2,5 &a是数组指针,其类型为 int (*)[5]; 而指针加1要根据指针类型加上一定的值,不同类型的指针+1之后增加的大小不同。 a是长度为5的int数组指针,所以要加5*sizeof(int) 所以ptr实际是a[5] 但是prt与(&a+1)类型是不一样的(这点很重要) 所以prt-1只会减去sizeof(int*) 35.一语句实现x是否为2的若干次幂的判断。 return x&(x-1)?1:0;;//返回0,则是2的若干次方 36.编写一个检查系统的大小端 intchecksys(){ union check{ int i; char c; }ret; ret.i=1; return ret.c }
37.computer”中长度为3的子串有多少个:字串是字符串中任意长度的连续字符构成的序列— —6个(com/omp/mpu/put/ute/ter)
38.用预处理指令#define声明一个常数,用以表明1年中有多少秒(忽略闰年问题) ——#defineSECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
39.char* const p; char const * p const char *p 上述三个有什么区别: (考察const就近原则)char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值*p不可以改 const char *p; //和char const *p --问题归结为 <type> const *p 和 <type>* const p 区别;只需要看const 后是什么类型;后者const 修饰的是*p,他是p所指向的内容为read-only; 而前者const 修饰的是p, 即指针变量p本身为 read-only; --从内存的角度来看(本人已测试验证): <type>*const p 变量p存放在read-only数据段 p为常量指针,p只用于读操作, 告诉编译器,p仅用做右值; const<type> *p 变量p存放在栈区; *p不一定为常量区,但*p只用于读操作,告诉编译器*p仅用作右值;
40.每个变量都有两个值与其相关联: (1)变量的数据值,储存在某个内存地址中,又叫做右值(可认为是被读取的值)。(2)变量的地址值,即储存数据值的内存地址,又叫做对象的左值。
41.Internet采用哪种网络协议?该协议的主要层次结构? TCP/IP,应用层/传输层/网络层/数据链路层/物理层
42.Internet物理地址和IP地址转换采用什么协议? ARP (Address Resolution Protocol)(地址解析协议)
43.IP地址的编码分为哪俩部分? IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
44.-1,2,7,28,,126请问28和126中间那个数是什么?为什么?
规律是n^3-1(当n为偶数0,2,4)
n^3+1(当n为奇数1,3,5)——63
45.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现? ——c用宏定义,c++用inline
46..软件测试都有那些种类?
——黑盒:针对系统功能的测试 白盒:测试函数功能,各函数接口
47.确定模块的功能和模块的接口是在软件设计的那个队段完成的?
概要设计阶段 48.交换两个变量的值,不使用第三个变量:有两种解法,一种用算术算法,一种用^(异或)
a = a + b;b = a - b;a = a - b(这种缺点就是a,b都较大时,a=a+b越界); or a= a^b;// 只能对int,char..b = a^b;a = a^b;或a ^= b ^= a; 49.c和c++中的struct有什么不同? c和c++中struct的主要区别是c中的struct不可以含有成员函数,而c++中的struct可以。c++中struct和class的主要区别在于默认的存取权限不同,struct默认为public,而class默认为private
|