C数据类型的定义声明

1.简单变量

选择需要的类型(char,int,float,double等);使用有效字符给变量取名;按以此格式声明:类型说明符 变量名;  

int a;            //声明一个整形变量a

unsigned short a;     //类型符由一个或多个关键字组成

int a, b, c;         //可同时声明多整个变量,用逗号隔开

int a = 1,b = 2;      //声明的同时可以初始化变量

char a = 'a';        //初始化字符常量

float a = 7.77e7      //初始化浮点型常量 

2.指针

int *ptr;                 //定义一个指向整型的指针

const int *ptr; int const *ptr;   //定义一个指向常量的指针

int *const ptr;             //定义一个指向整型的指针常量

const int * const ptr;         //定义一个指向常量的指针常量
int **a;              //定义一个指向指针的指针,指向的指针指向一个整形数

int  (*ptr)[5];          //定义一个指向数组的指针,该数组有5个整形数

int *(*a)[10];          //定义一个指向数组的指针,该数组有5个整形指针

 int (*ptr) ();          //定义一个指向函数的指针,该函数无形参,返回值为int型

struct a * ptr;         //声明一个结构体指针,可以指向任意a类型的结构

3.数组

char a[12];            //内含12个char类型元素的数组

float a[8];            //内含8个float类型元素的数组

int a[7] = {1,3,5,8,5};     //声明并初始化数组,该数组有7个int类型元素,编译器将剩余2个元素初始化为0

int a[ ] = {2,3,5,7,9,5};    //可省略方框内数字,编译器自动匹配数组大小和初始化列表中的项数

int *a[5];             // 内含5个指针的数组 ,指针指向int类型

4.函数

void aaaa(int num, char ch)    //函数头格式     返回值类型  函数名 (形参列表)

int *a();               //指针函数        无形参数 返回int类型的指针

5.结构

声明和定义

struct team {        //关键字 struct 后跟一个可选标记 team  (若非多次使用 可不带标记)

char  season[];       //每个结构体成员自己的声明来描述

int grade;

float kda;

};              //右花括号的分号为声明所必须,表示结构定义结束;右花括号可跟变更名,同时完成声明结构和定义结构变量的过程       
struct team SN;       //把 SN 声明为一个使用 team 结构布局的结构变量

struct team TES, DWG;   //声明两个使用 team 结构布局的结构变量,TES和DWG
struct team  JDG = {     //初始化结构变量与初始化数组类似 

"S10",

8,

15.6

 };

结构嵌套

struct teams {               //第一个结构

char first[LEN];

char four[LEN];

};    

struct lol {                   //第二个结构

char teams World_Championship;  //嵌套结构

char season[LEN];    

};    
    
struct lol lpl = {             //初始化结构变量
  {"TES","LGD"},
   "S10"
};   

6.联合

创建联合与创建结构相同,也需要联合模板和联合变量。

union hold {       //带标记的联合模板
int digdit;
double bingfl;
char letter;
};

union hold fit;         //hold类型的联合变量
union hold save[10];    //内含10个联合变量的数组
union hold *            //指向hold类型的指针

7.枚举

 enum常量为int类型

enum spectrum{red,orange,yellow,blue};    //声明以spectrum为标识符的枚举类型,括号的标识符枚举了spectrum变量可能的值
enum spectrum color;             //声明一个类型名为enum spectrum的变量 color

8.typedef

typedef没有创建新类型,只是为已存在的类型起一个简单的别名

typedef unsigned char uint8;        //为现有类型创建别名
typedef char Line[81];    //掩饰数组
Line text,line;
    
等同于
char line[81];           
char text[81];                
typedef char* pstr;      //修饰指针
int mystrcmp(const pstr p1,const pstr p3);   // 形参为两个指向char的常量指针    
typedef struct Student    //typedef 修饰结构体类型
    {
    int a;
    }Stu;

Stu stu1;                //声明结构体类型 Stu==struct Student

typedef百科:https://baike.baidu.com/item/typedef

9.宏定义

#define预处理器指令 ,完成字符串的简单替换

#define TWO 2              //由  #define指令+选定的缩写(宏)+ 替换体
#define LOL “League Of Legends”   // 长度仅限一行  反斜杠  可以把定义延续至下一行
#define MAX(X,Y) ((x)>(Y)?(X):(Y))    //简单函数 可改为带参数宏   定义中包含表达式,必须使用括号

如何判断定义的类型: https://blog.csdn.net/qq_41727218/article/details/79733724

原文地址:https://www.cnblogs.com/Gimiracle/p/13915786.html