参考:菜鸟教程
#include
int main()
{
/* 我的第一个 C 程序 */
printf("Hello, World! \n");
return 0;
}
讲解
C中区分大小写。
7、数据类型:
图源地址:https://www.cnblogs.com/ricksteves/p/9899893.html
枚举让数据更简洁易读:
enum 枚举名 {枚举元素1,枚举元素2,……};
常用基本数据类型占用空间(64位机器为例)
转换数据类型:
(1)自动转换规则:
(2)强制类型转换形式:
(类型说明符)(表达式)
运算符
6-1、算术运算符 + - * / % ++ –
6-2、关系运算符 == != > < >= <=
6-3、逻辑运算符 && || !
6-4、位运算符: p与q执行 | ^ & >> <<
6-5、赋值运算符: += -+ |= ^= 等等
6-6、杂项运算符 ↦ sizeof & 三元
9、判断语句 if / if…else / switch / 三元运算符 A?B :C;
10、循环语句 while / for / do…while
11、循环控制语句 break、continue、goto
12、函数
13、作用域:局部变量(函数内部)、全局变量(函数外部,通常在程序顶部)、形参(函数中的局部变量,同名时优先于全局变量)
14、数组从0开始 int a[5] 等于 a[0] a[1] a[2] a[3] a[4]
15、指针
#include
int main ()
{
int var = 20; /* 实际变量的声明 */
int *ip; /* 指针变量的声明 */
ip = &var; /* 在指针变量中存储 var 的地址 */
printf("Address of var variable: %p\n", &var );
/* 在指针变量中存储的地址 */
printf("Address stored in ip variable: %p\n", ip );
/* 使用指针访问值 */
printf("Value of *ip variable: %d\n", *ip );
/*一个空指针NULL*/
int *ptr = NULL;
printf("ptr 的地址是 %p\n", ptr );
return 0;
}
输出
Address of var variable: bffd8b3c
Address stored in ip variable: bffd8b3c
Value of *ip variable: 20
ptr 的地址是 0x0
要点:
1)指针的算术运算四种:++、–、+、-
2)指针数组:用来存储指针的数组。
3)C 允许指向指针的指针。
4)传递指针给函数:通过引用或地址传递参数,使传递的参数在调用函数中被改变。
5)从函数返回指针:C 允许函数返回指针到局部变量、静态变量和动态内存分配。
6)函数指针
typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型
7)回调函数:函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。
16、字符串的操作函数:复制、连接、返回长度、比较长度等
17、结构体
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} book = {"C 语言", "RUNOOB", "编程语言", 123456};
int main( )
{
struct Books Book1; /* 声明 Book1,类型为 Books */
/* Book1 详述 */
strcpy( Book1.title, "C Programming");
strcpy( Book1.author, "Nuha Ali");
strcpy( Book1.subject, "C Programming Tutorial");
Book1.book_id = 6495407;
/* 输出 Book1 信息 */
printf( "Book 1 title : %s\n", Book1.title);
printf( "Book 1 author : %s\n", Book1.author);
printf( "Book 1 subject : %s\n", Book1.subject);
printf( "Book 1 book_id : %d\n", Book1.book_id);
return 0;
}
用结构指针重写
struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
};
/* 函数声明 */
void printBook( struct Books *book );
int main( )
{
struct Books Book1; /* 声明 Book1,类型为 Books */
/* Book1 详述 */
strcpy( Book1.title, "C Programming");
strcpy( Book1.author, "Nuha Ali");
strcpy( Book1.subject, "C Programming Tutorial");
Book1.book_id = 6495407;
/* 通过传 Book1 的地址来输出 Book1 信息 */
printBook( &Book1 );
return 0;
}
void printBook( struct Books *book )
{
printf( "Book title : %s\n", book->title);
printf( "Book author : %s\n", book->author);
printf( "Book subject : %s\n", book->subject);
printf( "Book book_id : %d\n", book->book_id);
}
18、位域
有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有 0 和 1 两种状态,用 1 位二进位即可。为了节省存储空间,并使处理简便,C 语言又提供了一种数据结构,称为"位域"或"位段"。
所谓"位域"是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作。这样就可以把几个不同的对象用一个字节的二进制位域来表示。
19、共用体
共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。
20、typedef 关键字,为类型取一个新的名字如
typedef unsigned char BYTE;
21、#define 是 C 指令,用于为各种数据类型定义别名,与 typedef 类似,但是它们有以下几点不同:
#define TRUE 1
22、%d 格式化输出整数 / 输入
#include
int main()
{
int testInteger = 5;
printf("Number = %d", testInteger);
scanf("%d%d%d",&a,&b,&c);
return 0;
}