您的位置:首页 > 编程语言 > C语言/C++

C语言学习之路(二)数据类型基本知识点

2016-07-11 14:49 330 查看
1.什么是数据类型?

数据集合的划分,不同数据类型对CPU 的意义是不同的

1.  数据类型有哪些?

   


3.如何定义变量以及左右法则

1.定义变量的左右法则:

左右法则:首先从最里面的圆括号内未定义的标识符开始阅读看起,然后往右看,再往左看。每当遇到圆括号时,就应该掉转阅读方向。一旦解析完圆括号里面所有的东西,就跳出圆括号。重复这个过程直到整个声明解析完毕。

定义变量:

(1)int a; 

这个应该被理解为“declare a as anint”(a是一个int型的变量)。 

(2)int *a; 

这个应该被理解为“declare a as anint *”(a是一个int *型的变量),或者说a是一个指向一个int型变量的指针。(a中保存的是一个地址)

而int*  p,q; 

第一眼看去,好像是p和q都是int*类型的,但事实上,只有p是一个指针,而q是一个最简单的int型变量。

(3)int **a;

整型指针的指针变量

如:int num = 5;

int *p = #

int **pp = & p;

图解为:



                                   

(4)int a[10];

   整型数组

(5)int *a[10];

   整型指针数组

这里,a被声明为一个包含10个元素(int类型的指针)的数组。

 (6)int (*a)[10];

整型数组指针变量

这里,a被声明为一个指向一个10元素(int类型)数组的指针.

(7)int (*a)(int);

函数指针变量,即指针变量保存着函数地址(指针指向函数)

该函数形参为int,返回整型数。

(8)int (*a[10])(int);

函数指针数组,

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

阅读步骤: 

1. 从变量名开始-------------------------------------------- fp1 

2. 往右看,什么也没有,碰到了),因此往左看,碰到一个* ------ 一个指针 

3. 跳出括号,碰到了(int)----------------------------------- 一个带一个int参数的函数 

4. 向左看,发现一个*--------------------------------------- (函数)返回一个指针 

5. 跳出括号,向右看,碰到[10]------------------------------ 一个10元素的数组 

6. 向左看,发现一个*--------------------------------------- 指针 

7. 向左看,发现int----------------------------------------- int类型 

总结:fp1被声明成为一个函数的指针,该函数返回指向指针数组的指针. 

再来看一个例子: 

int *( *( *arr[5])())(); 

阅读步骤: 

1. 从变量名开始-------------------------------------------- arr 

2. 往右看,发现是一个数组---------------------------------- 一个5元素的数组 

3. 向左看,发现一个*--------------------------------------- 指针 

4. 跳出括号,向右看,发现()-------------------------------- 不带参数的函数 

5. 向左看,碰到*------------------------------------------- (函数)返回一个指针 

6. 跳出括号,向右发现()------------------------------------ 不带参数的函数 

7. 向左,发现*--------------------------------------------- (函数)返回一个指针 

8. 继续向左,发现int--------------------------------------- int类型 

总结:arr是函数指针数组,该数组的元素指向一个形参为空,返回值为函数指针的函数,该函数指向一个形参为空,返回值为整型指针。

(1)float ( * ( *b()) [] )(); 

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

(2)void * ( *c) ( char, int (*)());   

c:函数指针变量,指向函数形参为char,和函数指针返回值为void *.

(3)float ( * ( * e[10]) (int &) )[5];  

e:函数指针数组,该函数形参为整型指针,返回值为浮点型数组指针。

4、强制类型转化

char<int <float<double(隐式类型转换)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: