黑马程序员——[C语言]数据类型总结

来源:互联网 发布:剑三异瞳萝莉捏脸数据 编辑:程序博客网 时间:2024/05/21 09:11

------  Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

根据李杰明老师的视频讲解,我归纳出4种C语言的数据类型。基本数据类型、构造类型、指针类型、空类型。这四种大类型是我们编程语言中需要经常用到的。

一:基本数据类型

基本数据类型有4种:int类型(整型)、float/double类型(浮点型)、char(字符型)、字符串类型。

1)int类型:

1>int     在64位系统中所占字节为4          printf输出为“%d或者(%i)”

2>long int (long)       在64位系统中所占字节为8            printf输出为"%ld"

3>short int(short)      在64位系统中所占字节为2            printf输出为“%d或者(%i)”

4>unsigned int(unsigned)       在64位系统中所占字节为4     printf输出为"%zd"

5>signed int(signed)==int       在64位系统中所占字节为4      printf输出为“%d或者(%i)”

在不同的系统中,输出结果也会不同。可以用这个简单的办法算出你当前的int类型所占字节。

注:int 类型定义的变量只能是整型,如果是其他类型的变量,输出会有警告。


2)float/double类型:

1>float: 在64位系统中所占字节为4  printf输出为“%f”

2>double:在64位系统中所占字节为8   printf输出为“%f”

float与double的区别:

double:双精度浮点型,其实就是小数。比如5.43、-2.3、0.0等(注意,0.0也算是个小数)

float:单精度浮点型,也是小数,比double的精确程度低,也就是说所能表示的小数位数比较少。为了跟double区分开来,float 型数据都是以f结尾的,比如5.43f、-2.3f、0.0f。需要注意的是,绝对不能有10f这样格式的,编译器会直接报错,只有小数才允许加上f。

结果为:a=3.140000,a1=3.140000。从这个简单的代码块我们也可以看出float和double两者的异同了。


3)char类型

将一个数字(0~9)、英文字母(a~z、A~Z)或者其他符号(+、-、!、?等)用单引号括起来,这样构成的就是字符常量。比如'6'、'a'、'F'、'+'、'$'等。

注意:单引号只能括住1个字符,而且不能是中文字符,下面的写法是错误的:'abc'、'123456'、'男'

char 类型在内存中所占字节为1,它在内存中并不是以字符存储的,对照ASCII码表,每个字符有相应的数值表示。这个不需要去记录,用到时查看ASCII表就行了。


4)字符串类型

字符串类型其实是在学习了数组之后才开始接触的。但是这里是总结,所以直接把字符串类型挪到前面来总结了。

1>字符串常量:将一个或者多个字符用双引号("")括起来,这样构成的就是字符串常量。比如"6"、"男"、"哇哈哈"、"abcd"、"my_car4",其实在我们的printf中输出的就是字符串常量,例如:printf("HelloWorld");语句中的"HelloWorld"就是字符串常量。

2>字符串数组

1.字符串的初始化:char a[ ] = “123”;定义字符串是需要一个数组变量来定义的。数组字符与字符串是有差别的。

2.‘\0’的作用

char a[ ] = {‘1’,’2’,’3’};//这里数组包含元素'1','2','3'

char a[ ] = “123”; //这里字符串包含元素‘1’‘2’‘3’‘\0’


注意:这里打印的a[ ],a1[ ]是不同的,不加‘\0’对函数的影响很大。‘\0’的ASCII码值是0。用strlen函数可以计算字符串的长度。


二:构造类型

1)数组:

1>什么是数组:

1数组,从字面上看,就是一组数据的意思,没错,数组就是用来存储一组数据的.

 注意:只能存放一种类型的数据,比如int类型的数组、float类型的数组里面存放的数据称为“元素”

2>数组的定义

1.申明数组的类型 。2.申明数组的元素个数。

3>数组的格式

元素类型 数组名[元素个数] 例如: int a[10];  //整型数组,可以存储10个元素。

4>简单初始化


注意:元素有顺序之分,每个元素都有一个唯一的下标(索引),从0开始。数组元素的访问:a[i]

5>遍历

按顺序查看数组的每一个元素。

例如用循环查看:


6>内存分析

1. 存储空间的划分(内存的分配是从高地址到低地址进行的,但一个数组内部元素又是从低到高进行的)

2.数组名的作用,查看元素地址。

注:数组作为函数参数,可以省略元素个数。数组作为函数参数,传递是整个数组的地址,修改函数形参数组元素的值,会影响到外面的实参数组。


7>二维数组

二维数组是一个特殊的一维数组:它的元素是一维数组。例如int a[2][3]可以看作由一维数组a[0]和一维数组a[1]组成,这两个一维数组都包含了3个int类型的元素。


2)结构体

结构体:可以由多个不同类型的数据构成

定义结构体有3种类型。

方法一:

方法二:
方法三:
结构体类型作用域:从定义类型的那一行开始,一直到代码块结束。
1>定义在函数外面:全局有效
2>定义在(代码块)内部:局部有效

三:指针类型

指针是C语言中非常重要的数据类型,指针可以利用的范围也很广泛,在数组、字符串、以及后期的OC学习中都要用到指针。如果你说C语言中除了指针,其他你都学得很好,那你干脆说没学过C语言。

指针变量的定义:

定义的格式:类名标识符 *指针变量名;例如:int *p;

指针就一个作用,能够根据一个地址值,找到对应的存储空间,并且修改。

先定义后赋值

1. 简单取值

 int a = 10;

 int *p;

 p = &a;

 printf(“%d”, *p);

 简单改值

 *p = 9;

2.定义的同时赋值

int a = 10;

int *p = &a;

注意点:

1.int *p只能指向int类型的数据

2.指针变量只能存储地址

3.指针变量未经过初始化,不要拿来间接访问其他存储空间。

4.定义变量时的*仅仅是一个象征,没有其他含义。

指针与字符串:

定义字符串的2种方式:

1>利用数组:char name[ ] = "itcast";  特点:字符串里面的字符是可以修改的

2>利用指针:char *name[ ] = "itcast"; 特点:字符串其实是一个常量字符串,里面的字符是不能修改的。使用场合:字符串的内容不需要修改。利用一个指针来接收一个数组,指针变量指向数组的首元素。

指向函数的指针:   变量返回值 (*p)形参

例如:void (*p) ();



















0 0
原创粉丝点击