1 数据类型
a 基本类型 a1 整数类型 a2 浮点类型 b 枚举类型 b1 算数类型,被用来定义在程序中只能赋予其一定的离散整数值的变量。 c void类型 c1 类型说明符,没 有可用的值 d 派生类型 d1 指针类型 d2 数组类型 d3 结构类型 d4 共用体类型 d5 函数类型
1.1 基本类型
a1:整数类型 char,unsigned char,signed char, int, unsigned int, short, unsigned short, long,unsigned long, a2:浮点类型 float double long double
1.2 枚举类型
b1:枚举类型 enum
1.3 void类型
c1:void
void 在英文中作为名词的解释为 "空虚、空间、空隙",而在 C 语言中,void 被翻译为"无类型",相应的void * 为"无类型指针"。
void 似乎只有"注释"和限制程序的作用,当然,这里的"注释"不是为我们人提供注释,而是为编译器提供一种所谓的注释。
1.4 派生类型
d1:指针类型 int *p; // 定义指针变量 d2:数组类型
声明数组
在 C 中要声明一个数组,需要指定元素的类型和元素的数量,如下所示:
type arrayName [ arraySize ];
eg:
double balance[10];
d3:结构类型
为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
struct [structure tag]
{
member definition;
member definition;
...
member definition;
} [one or more structure variables];
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book;
结构体访问 使用 .
指向结构的指针
您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:
struct Books *struct_pointer;
struct_pointer = &Book1;
访问结构体:struct_pointer->title;
d4:共用体类型
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。
为了定义共用体,您必须使用 union 语句,方式与定义结构类似。union 语句定义了一个新的数据类型,带有多个成员。union 语句的格式如下:
union [union tag]
{
member definition;
member definition;
...
member definition;
} [one or more union variables];
访问共用体成员
为了访问共用体的成员,我们使用成员访问运算符(.)
#include <stdio.h>
#include <string.h>
union Data
{
int i;
float f;
char str[20];
};
int main( )
{
union Data data;
data.i = 10;
data.f = 220.5;
strcpy( data.str, "C Programming");
printf( "data.i : %d\n", data.i);
printf( "data.f : %f\n", data.f);
printf( "data.str : %s\n", data.str);
return 0;
}
d5:函数类型
函数是一组一起执行一个任务的语句。每个 C 程序都至少有一个函数,即主函数 main() ,所有简单的程序都可以定义其他额外的函数。
您可以把代码划分到不同的函数中。如何划分代码到不同的函 数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。
函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。
C 标准库提供了大量的程序可以调用的内置函数。例如,函数 strcat() 用来连接两个字符串,函数 memcpy() 用来复制内存到另一个位置。
函数还有很多叫法,比如方法、子例程或程序,等等。
other:
宏(英语:Macro)是一种批量处理的称谓。
计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。解释器或编译器在遇到宏时会自动进行这一模式替换。对于编译语言,宏展开在编译时发生,进行宏展开的工具常被称为宏展开器。
案例
get_max_num.c
#include <stdio.h>
#include "myh/myh.h"
void main(){
int x=3;
int y=8;
int z;
z =max_num(x,y);
printf("%d\n",z);
return ;
}
myh/myh.h
int myint;
char mychar;
int max_num(int a,int b){
if (a >b){
return a;
}
else{
return b;
}
};
编译 gcc ./practice/get_max_num.c -o ./o/max_num
执行 ./o/max_num
michael@NOTOUCH:/mnt/c/Users/Administrator/c_nb$ ./o/max_num
8
michael@NOTOUCH:/mnt/c/Users/Administrator/c_nb$