Skip to content

C语言-数据结构与算法

C语言基础

因为之前写算法都是用C++,也有了些C++基础,变量常量数据类型就跳过去吧。

首先是环境,学C++时候用Clion,C语言也用它写吧~

新建项目,选C执行文件,语言标准。。。就先默认C99吧,反正是测试环境,应该问题不大

image-202308231173119510

直接运行一手

image-202130823173157961

嗯。。JB家的新UI。。真是。。。。。。。一言难尽

指针

好像最开始学C++开始,就一直没玩明白指针,毕竟一用数组链表就直接上STL库,也不太用得到指针

新的学习阶段,从指针开始!

21

c
#include <stdio.h>

int main() {
    int a = 123;
    int * p = &a;
    printf("a:%d\n", a);
    printf("*p:%d\n", *p);
    printf("a的地址:%p\n", &a);
    printf("指针p指向的地址:%p\n", p);
    printf("指针p自身的地址:%p\n", &p);
    return 0;
}

image-20230825144721227

如果你的Clion输出乱码,按照以下顺序配置即可解决:

文件——设置——编辑器——文件编码,都改成UTF-8

image-202308251415205006

然后点击确定,回到代码页面,点击最下方UTF-8,选择GBK

image-202310825145313835

再点击转换,重新运行即可解决

image-202310825145348845

结构体

使用typedef可以给结构体指定别名

C
#include <stdio.h>
#include <string.h>
typedef struct Book {
    char isbn[50];
    char name[20];
    int price;
}B;

int main() {
    // 声明
    struct Book b;
    // 初始化
    b.price = 20;
    strcpy(b.name, "笑场");
    // 声明同时初始化
    struct Book a = {"122333123", "冷玚", 45};
    B c = {"122334233123", "乡土中国", 65};
    return 0;
}

属性声明的同时进行变量声明

c
struct Book {
    char isbn[50];
    char name[20];
    int price;
} stu;

属性声明的同时进行变量声明及初始化

c
struct Book {
    char isbn[50];
    char name[20];
    int price;
} stu = {"1531", "宇宙超度指南", 46};

如果只需要声明一次,可以省略结构体标记

C
struct {
    char isbn[50];
    char name[20];
    int price;
} stu = {"1531", "宇宙超度指南", 46};