笔试错题集(编程语言)

1.对于int *pa[5] ;的描述:

  • int * pa[5] 默认[]要先结合,所以先可以得到pa[5],即pa是一个大小为5的数组
    然后表达式剩下int * , 即表示数组中存储的是int型的指针。
    综合就是pa是个指针数组,数组大小为5

  • 而对于int (*pa)[5],括号优先级别最高 得到(*pa)  ,表示pa是一个指针
    然后是外部的数组符号,表示pa指向的是一个数组,数组的大小是5
    最后是那个int ,表示数组中存储的是int型的数据。

综合就是pa是个数组指针,指向的数组为5个int型的元素。

2.友元函数的描述:友元函数是指某些虽然不是类成员却能够访问类的所有成员的函数。类授予它的友元特别的访问权。通常同一个开发者会出于技术和非技术的原因,控制类的友元和成员函数(否则当你想更新你的类时,还要征得其它部分的拥有者的同意)。

   注:在C++中友元函数是独立于当前类的外部函数,一个友元函数可以同时定义为两个类的友元函数,友元函数既可以在类的内部,也可以在类的外部定义;在外部定义友元函数时,不必加关键字friend。

3.执行如下程序代码:

char chr = 127;
int sum = 200;
chr += 1;
sum += chr;

后,sum的值是   ; ( 72/328    )

备注:c/c++下:因为char类型的数据范围为0到127,127+1超过了这个范围,而127的二进制为01111111,加1后按照有符号输出就为-128,所以200-128=72

4.可用于字符串复制的函数有:strcpy sprint memcpy

5.指出下列代码的缺陷(      )。

 float   f[10];
// 假设这里有对f进行初始化的代码
….
//for循环需要遍历f中所有元素
for(int i = 0; i < 10;)
{
if( f[++i] == 0 )
break;
} 

答:f是float型数据直接做相等判断有风险

       f[++i]应该是f[i++]:这里使用的 ++i 会先执行, 程序会出现从 index=1开始执行, 而且会出现数据访问越界f[n]。                        a = ++i,相当于 i=i+1; a = i; a = i++,相当于 a = i; i=i+1。i++先做别的事,再自己加1,++i先自己加1,再做别的事情

6.Java语言中,下面哪个语句是创建数组的正确语句?

float f[][] = new float[6][6];
float []f[] = new float[6][6];
float [][]f = new float[6][6];
float [][]f = new float[6][];

7.Java方法:java不允许单独的方法,过程或函数存在,需要隶属于某一类中; java语言中的方法属于对象的成员,而不是类的成员。不过,其中静态方法属于类的成员。

 

 

你可能感兴趣的:(面试题)