C语言 核心语法速查

参考:菜鸟教程

#include 
 
int main()
{
    /* 我的第一个 C 程序 */
    printf("Hello, World! \n");
 
    return 0;
}

讲解

  • #include 是一个预处理命令,用来引入头文件。 stdio.h 是一个头文件 (标准输入输出头文件) 。
  • 所有的 C语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。
  • printf() 函数在 "stdio.h"头文件中声明。当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。
  • 每个语句必须以分号结束。

C中区分大小写。

7、数据类型:
C语言 核心语法速查_第1张图片
图源地址:https://www.cnblogs.com/ricksteves/p/9899893.html
枚举让数据更简洁易读:

enum 枚举名 {枚举元素1,枚举元素2,……};

常用基本数据类型占用空间(64位机器为例)

  • char : 1个字节
  • int :4个字节
  • float:4个字节
  • double:8个字节

转换数据类型:
(1)自动转换规则:

  • a)浮点数赋给整型,该浮点数小数被舍去;
  • b)整数赋给浮点型,数值不变,但是被存储到相应的浮点型变量中;

(2)强制类型转换形式:

(类型说明符)(表达式)

运算符
6-1、算术运算符 + - * / % ++ –
6-2、关系运算符 == != > < >= <=
6-3、逻辑运算符 && || !
6-4、位运算符: p与q执行 | ^ & >> <<
6-5、赋值运算符: += -+ |= ^= 等等
6-6、杂项运算符 ↦ sizeof & 三元
C语言 核心语法速查_第2张图片
9、判断语句 if / if…else / switch / 三元运算符 A?B :C;
10、循环语句 while / for / do…while
11、循环控制语句 break、continue、goto
12、函数

  • 由一个函数头和一个主体构成,一个函数可以返回一个值 int max(),若不需要返回值,则 void function(){ }
  • 函数可以先声明再定义,也可以同时定义。
  • 传递参数两种方式:传值调用(修改函数内不影响外部值),引用调用(指针,指向实参地址,等于操作实参)

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 类似,但是它们有以下几点不同:

  • typedef 仅限于为类型定义符号名称,#define 不仅可以为类型定义别名,也能为数值定义别名,比如您可以定义 1 为 ONE。
  • typedef 是由编译器执行解释的,#define 语句是由预编译器进行处理的。
#define TRUE  1

22、%d 格式化输出整数 / 输入

#include 
int main()
{
    int testInteger = 5;
    printf("Number = %d", testInteger);
    
	scanf("%d%d%d",&a,&b,&c); 

    return 0;
}

你可能感兴趣的:(C,/,C++,/,JAVA)