------ 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。
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种类型。
方法一:
方法三:
结构体类型作用域:从定义类型的那一行开始,一直到代码块结束。
三:指针类型
指针是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) ();