跳到主要内容

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$