c 语言总结

helloworld

#include<stdio.h> 
int main()
{
    /*在双引号中间输入Hello World*/ 
    printf("Hello World");
    return 0; 
}

单行注释: `//注释一行`
多行注释: `/* 注释内容 */`
 

数据

数据类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

存储类别:

  • 自动(auto)auto int b,c; “自动存储类别
  • 静态(static)static int i = 0; 运行期间都不释放
  • 寄存器的(register)register int i; 寄存器变量
  • 外部的(extern)本文件extern int i; 外部文件int i=42; 其他地方定义的变量

数组

1.  数据类型 数组名称[长度n] = {元素1,元素2…元素n};
2.  数据类型 数组名称[] = {元素1,元素2…元素n};
3.  数据类型 数组名称[长度n]; 数组名称[0] = 元素1; 数组名称[1] = 元素2; 数组名称[n-1] = 元素n;

字符串

1.  char 字符串名称[长度] = “字符串值”;
2.  char 字符串名称[长度] = {‘字符1,‘字符2,,‘字符n’,’\0};

在这里插入图片描述

printf("输出格式符",输出项);
在这里插入图片描述

枚举

enum DAY
{
      MON=1, TUE, WED, THU, FRI, SAT, SUN
};
enum DAY day; 
day = WED; 
printf("%d",day);
后续枚举成员的值在前一个成员上加 1;

结构体

不同变量的集合,内存连续

struct Pair{
    int a;
    float b;
};

struct Pair p = {1, 2.0};
printf("%d,%f\n", p.a, p.b);

共用体

成员有且只能有一个占用内存空间。
union Data { 
int i;
float f;
char str[20];
} data;

运算符

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

三目运算符:表达式1 ? 表达式2 : 表达式3;

先判断表达式1的值是否为真,如果是真的话执行表达式2;如果是假的话执行表达式3。

优先级
在这里插入图片描述

控制语句

if-else语句

if(表达式){执行语句;}
else if(表达式){执行语句;}
else{执行语句;}

while

while(表达式){执行语句;}

do-while

do{执行语句;}while(表达式)//有分号

for

for(表达式1;表达式2;表达式3){执行语句;}

switch

switch(表达式){
	case 常量表达式1:执行语句;break;
	case 常量表达式2:执行语句;break;
	case 常量表达式n:执行语句;break;
	default: 执行代码n+1

如果没有break语句,执行流程将继续执行下一个case标签处的代码块,直到遇到break语句或者switch语句的结束,或者执行流程到达了其他的case标签。

goto

LOOP: i=0;
goto LOOP;

结束语句

break;
continue;
return 0;

函数

[数据类型] 函数名 ([参数])
{
代码;
return (表达式)}

递归函数
函数体内调用它自身。递归函数必须有结束条件。

关键字

define

#define PI 3.14159

float c(float r){
  return 2.0 * PI * r;
}

typedef

typedef int interger;
typedef enum {Apple, Banana} Fruit;
typedef struct { int a; float b; } Pair;

void main(){
    interger i = 1;
    Fruit fruit = Apple;
    Pair p = {1, 2.0};
}

指针

//变量
int v = 1;
int *vp = &v;
*vp += 1; // v 变成了 2

//数组
int i[3] = {1, 2, 3};
int *p = i; // 或 int *p = &i[0];
*(p+2) = 4; // 相当于 i[2] = 4;
printf("%d\n", *(p+2)); // 相当于打印 i[2]

//二维数组
int arr[2][3] = {{1,2,3}, {4,5,6}};
int *p = arr[0];
*(p + (3 * 1) + 2) = 7;  // 相当于 arr[1][2] = 7;
printf("%d\n", arr[1][2]);

//指向指针的指针
int v = 1;
int *pv = &v;
int **pp = &pv;
(**pp)++;

//指向函数的指针
int add(int a, int b){
    return a + b;
}
int sub(int a, int b){
    return a - b;
}
int main(int argc, const char * argv[]) {
    int (*op)(int, int) = &add;
    printf("%i\n", (*op)(3, 1));
    op = &sub;
    printf("%i\n", (*op)(3, 1));
    return 0;
}


//堆内存
int *p = (int *) malloc(8);  //获取内存,返回 `void *` 类型的指针。
p[0]=0; // 这样写也可以哦,和 *(p+0) 的是一样的
p[1]=1;
printf("%d\n", p[1]); // 1

p = realloc(p, 12); //重新指定内存的大小
p[2] = 2;
printf("%d\n", p[2]); // 2

free(p); //释放内存(全部回收)

标准库

读写文本文件

#include <stdio.h>

#define MAX 10000

void main() {
    FILE *s = fopen("a.txt", "r");
    FILE *t = fopen("b.txt", "a");
    char c[MAX] = "";

    char *e;
    while((e = fgets(c, MAX, s)) != 0){
        fputs(c, t);
        printf("%s", c);
    }
    fclose(s);
    fclose(t);
}

字符串操作

#include <stdio.h>
#include <string.h>
#define MAX 1000

void main() {
    char s[MAX] = "hello world";
    char t[MAX] = "";

    int len = strlen(s); // len is 11
    char *pl = strchr(s, 'l'); // (pl-s) is 2
    strcpy(t, s); // t is "hello world"
    strcat(t, s); // t is "hello worldhello world"
}
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值