数据类型与定义

来源:互联网 发布:石头网络刷钻软件 编辑:程序博客网 时间:2024/06/05 12:07

数据类型就是数据集合的划分,不同数据类型对CPU的意义是不一样的。在c语言中我们对不同的数据类型进行了划分。


对于我们来说,要学会编程首先我们需要学会的就是定义变量,这是最基本的东西,但是就是这些最基本的东西我们往往会忽略其重要性。

这是一家公司的面试题:

1.用变量 a 给出下面的定义

a) 一个整型数(An integer)

b)一个指向整型数的指针( A pointer to an integer)

c)一个指向指针的指针,它指向的指针是指向一个整型数( A pointer to a pointer to an integer )

d)一个有 10 个整型数的数组( An array of 10 integers)

e) 一个有 10 个指针的数组,该指针是指向一个整型数的。(An array of 10 pointers to integers)

f) 一个指向有 10 个整型数组的指针( A pointer to an array of 10 integers)

g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a function that takes an integer as an argument and returns an integer)

h)一个有 10 个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数( An array of ten pointers to functions that take an integer argument and return an integer )

刚看到这些题时我是一脸迷茫,除了最基础的定义一个变量和数组之外别的都不会。当然了掌握了方法这些题目都会迎刃而解的。这种方法我们叫做右左法则,就是先找到变量,再看变量右边的提示,再看左边的提示这样一直下去。

以上面的面试题为例:

a)int a;             整型变量(首先找到变量a,然后看a的右边没有,再看a的左边是int,所以这个就是整型变量)

b)int *a            整型指针变量(首先找到变量a,然后看a的右边没有,再看a左边是*,说明这是一个指针变量,然后再看*的左边是int,说明这个指针变量的地址类型是整型)

c)int **a          整型指针的指针变量(首先找到变量a,然后看a的右边没有,再看a左边是*,说明这是一个指针变量,然后再看*的左边是*,说明这个指针存放的是指针的地址,再看*左边是int,所以这个是整型指针的指针变量)

d)int a[10]      整型数组(a的右边是[10],说明这是一个数组,再看左边是int,所以这是整型数组)

e)int *a[10]    整型指针数组(a的右边是[10],说明这是一个数组,再看左边是*,这是一个指针数组,再看左边是int 所以这是整型指针数组)

f)int (*a)[10]   整型数组指针变量(a的右边是 )结束,再看a的左边是*,这是一个指针变量,再看右边是[10],那么这就是一个数组指针变量,再看左边是int,所以这是整型数组指针变量)

g)int (*a) (int) 函数指针变量(a的右边是),结束,再看a的左边是*,这是一个指针变量,再看右边是(int),所以这是一个函数指针变量,该函数的形参为int,返回值为int)

h) int (*a[10]) (int)  函数指针数组(a的右边是[10],这是一个数组,a的左边是*,这是一个指针数组,再看右边是(int),所以这是函数指针数组,该函数的形参为int,返回值为int)


下面我们再来看看几个比较复杂的例子:

int *(*(*fp1) (int)) [10]

这是一个函数指针变量,指向一个形参为int,返回值为数组指针,该指针指向一个整型指针数组。

float (*(b()) [ ]) ()

b是一个函数,该函数的形参为空,返回值为数组指针,该数组指针指向一个函数指针数组,该数组里的元素指向一个形参为空,返回值为float。

float (*(*e[10]) (int  *))[5]

e是函数指针数组,该数组的元素指向一个形参为 int *,返回值为数组指针,该指针指向float型数组。



0 0
原创粉丝点击