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

相关文章: