笔试题资源整理(2)

5. what's reflection in java

 解答:一对一、一对多、多对一的映射概念

6. How many data types can be used in swith (Java)?

 解答:int ,char,byte,short,boolean,enum(枚举)

 

7.定义:

  a).指针数组:

 解答:定义 int *p[n];

 []优先级高,先与p结合成为一个数组,再由int *说明这是一个整型指针数组。它有n个指针类型的数组元素。

p[0],p[1]...p[n-1]分别是指针变量用来存放变量地址。

  b).数组指针(也称行指针):

 

 解答:定义 int (*p)[n];

 

()优先级高,说明p是一个指针,指向一个整型的一维数组,这个一维数组的长度为n,也可以说是p的步长。

优先级:()>[]>*

两者的区别:数组指针只是一个指针变量,指向的是一个数组(多用来指向二维数组),它占有内存中一个指针的存储空间。指针数组是多个指针变量(为避免搞混,你可以想到整型数组)占有多个指针的存储空间。

同时用来指向二维数组时,其引用和用数组名引用都是一样的。
比如要表示数组中i行j列一个元素:
*(p[i]+j)、*(*(p+i)+j)、(*(p+i))[j]、p[i][j] 

 c).函数指针:  

 解答:函数指针是指向函数的指针变量,本质是一个指针变量(联系到C#中的委托)

 int (*p) (int x);  //声明一个函数指针

 p=func;   //将func函数的首地址赋给指针p

 指向函数的指针包含了函数的地址,可以通过它来调用函数。声明的格式:类型说明符 (*函数名)(参数)

 例子:

 

void (*funcp)();

        void FileFunc(),EditFunc();



        main()

        {

            funcp=FileFunc;

            (*funcp)();

            funcp=EditFunc;

            (*funcp)();

        }



        void FileFunc()

        {

            printf(“FileFunc\n”);

        }



        void EditFunc()

        {

            printf(“EditFunc\n”);

        }



        程序输出为:

            FileFunc

            EditFunc

 

d).指针函数

 解答:指针函数是只带指针的函数,其本质是一个函数,函数返回类型是某一类型的指针,声明格式为:

类型标识符    *函数名(参数表)

   int *f(xy);

首先要明白它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受。

 

float *fun();

 

float *p;

p = fun();

由于返回的是一个地址,所以类型说明符一般都是int
    
例如:int *GetDate();
          int * aaa(int,int);

例子:

 

 1 #include<stdio.h>   

 2 int * GetDate(int wk,int dy);//指针函数的声明

 3 

 4  main()

 5  {

 6    int wk,dy;

 7    int *result;//整型指针变量

 8            do

 9             {

10                 printf("Enter week(1-5)day(1-7)\n");

11                 scanf("%d%d",&wk,&dy);

12             }

13             while(wk<1||wk>5||dy<1||dy>7);

14             result=GetDate(wk,dy);//函数返回值赋给同类型的指针变量

15             printf("%d\n",*result);

16  }

17 

18  int * GetDate(int wk,int dy)

19  {

20             static int calendar[5][7]=

21             {

22                {1,2,3,4,5,6,7},

23                {8,9,10,11,12,13,14},

24                {15,16,17,18,19,20,21},

25                {22,23,24,25,26,27,28},

26                {29,30,31,-1}

27             };

28             return &calendar[wk-1][dy-1];

29  }
View Code

 

e).指针的指针

解答:

 

指针的指针需要用到指针的地址。
        char c='A';
        char *p=&c;
        char **cp=&p;

用法举例:

 

 1 #include<stdio.h>   

 2 void FindCredit(int ** fpp);

 3 main()

 4 {

 5     int vals[]={7,6,5,-4,3,2,1,0};

 6     int *fp=vals;

 7     FindCredit(&fp);

 8     printf("%d\n",*fp);

 9 }

10 

11 void FindCredit(int ** fpp)

12   {

13       while(**fpp!=0)

14       if(**fpp<0) break;

15       else (*fpp)++;//*运算符优先级高于++运算符,所以()是必须的。

16   }

 

f).指向指针数组的指针:

难点,怎样灵活运用,例子还没弄出来。

8.Describe scope of public/private/frined/protected/protected frined

解答:

Public   公用   同一项目中任意位置的代码,引用该项目的其他项目,以及由该项目生成的任何程序集
Protected   保护   同一个类内部或从该类派生的类中访问元素。
Friend   友元   从同一程序集内部访问元素,而不能从程序集外部访问
Protected   Friend     Protected 和 Friend的联合派生类或同一程序集内,或两者皆可
Private   私有   仅可以从同一模块、类或结构内访问元素

程序集:经由编译器编译得到的,供CLR进一步编译执行的那个中间产物,在WINDOWS系统中,它一般表现为.dll,或者是.exe的格式,但是要注意,它们跟普通意义上的WIN32可执行程序是完全不同的东西,程序集必须依靠CLR才能顺利执行。

 

 

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