C语言的数据类型分为:标准数据类型和构造数据类型
标准数据类型:
signed :bool,char,short,int,float,double,long,long long,
unsigned: char,short,int,float,double,long,long long,
构造数据类型:
数组,结构体,联合体,枚举
一维数组:
数组是一种数据类型连续的集合;
example:
auto int a[9];
//存储类型 数据类型 数组名 (标识符) [下标]
//数据类型是修饰数组元素的,下标意味着有多少个连续的空间
数组的定义申明以及初始化:
int a[5] = {1,2,3,4,5};//数组只有在定义时可以整体性赋值
int b[3];
b[3] = {1,2,3}; //错误的赋值方式
int c[3] = {1}; //其c[0] = 1;c[1] = 0;c[2] = 0;
数组名的三个含义:
1、数组名
2、首元素首地址
3、指针常量
例:int a[5];
&a表示整个数组空间的地址 &a+1表示跨越整个数组空间
a表示数组首个元素的地址 a == &a[0] a+1 == &a[0]+1 == a[1]
字符数组:
char b[5] = {a,b,c,d,e};
字符串数组:
char a[10] = "hello";
char c[5] = "world";
strcat(a,c);//数组的值为helloworld
字符串的操作方式(皆基于'\0'):
char * strcat(char *dest,const char *str);//字符串粘接
char * strlen(const char *str);//求字符串元素的个数
char * strcpy(char *dest,const char *str);//字符串拷贝
char * strncpy(char *dest,const char *str,size_t size);
char * strcmp(const char *dest,const char *str);//字符串比较
char * strncmp(const char *dest,const char *str,size_t size);
二维数组:
用于装一维数组的数组
逻辑抽象为二维数组,本质上的存储方式都是一维的
example:
auto int a[2][3] = {{1,2,3},{4,5,6}};
//存储类型 数据类型 数组名 [下标1][下标2]
//下标1表示可以装几个一维数组
//下标2表示该二维数组的一维数组可装多少个元素
a== &a[0][0] == a[0]
结构体:
为了描述世间的复杂事物而存在的
struct stu
{
int num;
char name[10];
char sex;
};
struct stu student = //赋值方式一
{
.num = 1,
.name = "jack",
.sex = 3,
};
struct stu student = //赋值方式二
{
1,
"jack",
3,
};
student.num = 5; //赋值方式三
typedef struct stu //typedef 为该结构体 取别名为tt
{
int num;
char name[10];
char sex;
} tt;
typedef struct stu
{
int num;
char name[10];
char sex;
} tt,*point;
struct stu *p;
point p;