C语言学习笔记(抱佛脚版)

毕业一年,发现记性是真的差,每次想起之前的知识总是想不全,看别人写的资料也懵懵懂懂。于是我索性自己再学一遍,并且记录一下。希望对你们也有所帮助。

正片开始!

前面的什么if for都不难理解,嵌套的话也不难理解

重点讲比较容易忘记的,又特别重要的

数组

可以理解为容器,可以存储很多个相同类型的变量。如水杯,可以装液体。

将多个数据存储到一起,每个数据称为容器的元素。

数组概念:

1.相同类型的数据按一定顺序排列的集合,并且使用一个名字命名,通过编号的方式对数据统一管理

2.数组名、下标(或索引)、元素、数组长度

数组特点:

1.数组的元素在内存中依次紧密排列,有序的

2.创建数组对象会在内存开辟一整块连续的空间。占据的空间大小,取决数组的长度和数组中元素的类型。

3.可以直接通过下标的方式调用指定位置的元素,速度很快

4.数组一旦初始化完成,长度就是固定的 。数组长度一旦确定,就不能修改

5.数组名中引用的是这块连续空间的首地址

**数组维度分类:**一维数组、二维数组、三维数组、四维数组、等

使用方法: int i[5]; //整型数组,数组名i,长度6

char i[5]; //字符数组,数组名i,长度6

cpp 复制代码
调用数组:  
int i[5];//定义一个一维数组
i[0]=55; //对0下标的元素赋值        
int a = i[0]; //将0下标i数组的元素值赋值给a

这里需要注意,int i[5]; 实际下标只能访问到 i[4]; ,如果访问下标5,属于数组标越界,编译器不一定报错,但是程序肯定是不对的。 合理访问角标数值应该为 0~n-1

break和continue关键字

|----------|----------|------------------|
| 关键字 | 循环结构中的作用 | 适用范围 |
| break | 跳出循环结构 | switch-case、循环结构 |
| continue | 跳出当次循环 | 循环结构 |

goto关键字

无条件语句转移,执行goto语句,程序跳转到指定标号处执行。可以实现类似循环的效果

cpp 复制代码
void main()
{
    tiaozhuan:printf("你过来啊!\n");
    goto tiaozhuan;
}

//运行结果是无限输出 你过来啊!......

指针

指针是c语言的重要概念之一,也是最难理解的概念。ok学会了,咱就可以在简历上写,熟练c语言。

指针在刚开始学习的时候不怎么用,用的多的地方是结构体、链表的结点、二叉树等

cpp 复制代码
//例子
int a = 1;
int b = 2;
int c = a+b;  //那么c的值就是3
//这里用的就是直接访问,直接使用变量名访问
//间接访问就是利用指针

内存地址与指针

有效的访问内存的每个单元,给内存单元进行编号,编号叫做 内存单元的地址。

每个单元都有地址,包括变量存储的数据也有地址。

如上面的例子

|-----|------------|------------|-----------|
| 地址 | 0x00000004 | 0x00000002 | 0x000000B |
| 变量名 | a | b | c |
| 变量值 | 1 | 2 | 3 |

通过地址就能找到变量单元,把这个地址叫做指针
指针变量:一个变量专门存储另一变量的地址(即指针)。可以通过访问指针变量达到访问内存另外一个变量数据。

我需要取变量c的值,那么我可以通过指针从地址获取c的值为3

cpp 复制代码
指针的格式写法
int *p;    //可以写成以下任意格式:int * p; int* p;
//注意:1、指针变量的名字是p,不是*p。 2、指针变量中只能存地址,不能存任何非地址类型的数据。不要把任何其他的数值赋给一个指针变量。

结构体(struct)

结构体有什么用?结构体类似数组,但数组只能包含同类型的数据,结构体可以对多个不同类型的数据进行管理。

允许自定义复合数据类型,将不同的类型的值组合在一起,这种类型叫结构体

c语言没有其他语言的对象(object)和类(class)的概念,结构体理论上可以堪比对象和类。

cpp 复制代码
//结构体声明,构建一个结构体类型的一般格式

struct 结构体名{
    数据类型1 成员名1;    //;结尾
    数据类型2 成员名2;
    数据类型3 成员名3;
    ......
    数据类型n 成员名n;
};    //结尾需要有一个分号

----------------------------分界线
//案例1
#include <stdio.h>  // 支持 printf
#include <string.h> // 支持 strcpy


struct qinshi{    //定义结构体:寝室
    int id;    //床位号
    char name[20];    //姓名
    char    gender;    //性别
    char    address[50];    //家庭住址

};        //分号不能忘了 



//调用结构体
int main(){
    //格式: struct 结构体类型名称  结构体变量名
    struct qinshi qin;    //声明结构体变量,这个qin1是用来后面调用,可以替换
    qin.id = 1;    //调用结构体成员
    //qin.name = "老王"; //数组不能重新赋值,只能赋值给数组的元素
    strcpy(qin.name,"老王");  //将数组元素赋值为 老王
    qin.gender = 'M'; //这里单符号赋值,要给单引号,否则会有问题
    strcpy(qin.address,"广东中山");

    printf("id = %d,name = %s,gender=%c,address = %s",qin.id ,qin.name, qin.gender, qin.address);
    return 0;
}
--------分界线-----
//案例2
#include <stdio.h>  // 支持 printf
#include <string.h> // 支持 strcpy


struct qinshi{    //定义结构体:寝室
    int id;    //床位号
    char name[20];    //姓名
    char    gender;    //性别
    char    address[50];    //家庭住址

};        //分号不能忘了 



//调用结构体
int main(){
    //格式2: struct 结构体类型名称  结构体变量名 = {初始化数据};
    struct qinshi qin = {1, "老王", 'M', "广东中山"};   //按顺序初始化 
    printf("id = %d,name = %s,gender=%c,address = %s",qin.id ,qin.name, qin.gender, qin.address);
    return 0;
}
//格式3:struct 结构名 结构体变量={.参数1=***, .参数2=***, ......};
struct qinshi qin = {.id=1, .gender='M',.address= "广东中山", .name="老王", };
//格式三灵活直观一点,不受顺序影响,阅读性高高的  
 
----------分界线----------

//格式4:声明类型的同时定义变量
#include <stdio.h>  // 支持 printf
#include <string.h> // 支持 strcpy 
struct qinshi{    //定义结构体:寝室
    int id;    //床位号
    char name[20];    //姓名
    char    gender;    //性别
    char    address[50];    //家庭住址

}son1,son2,son3;        //直接声明变量名,儿子123

int main(){
    //格式4:声明类型的同时定义变量 
    strcpy(son1.name ,"老铁");
    strcpy(son2.name ,"老王");
    printf("name = %s,name = %s",son1.name,son2.name);
    return 0;
}
相关推荐
lwewan7 小时前
26考研——栈、队列和数组_数组和特殊矩阵(3)
数据结构·笔记·考研·算法
wei3872452328 小时前
java笔记02
java·开发语言·笔记
nuc-1278 小时前
sqli-labs学习记录8
数据库·学习·sqli-labs
士别三日&&当刮目相看9 小时前
JAVA学习*简单的代理模式
java·学习·代理模式
要天天开心啊9 小时前
MyBatis第二天笔记
笔记·tomcat·mybatis
枫林血舞9 小时前
python笔记之函数
笔记·python
今夜有雨.9 小时前
HTTP---基础知识
服务器·网络·后端·网络协议·学习·tcp/ip·http
悄悄敲敲敲10 小时前
C++第13届蓝桥杯省b组习题笔记
c++·笔记·算法·蓝桥杯
长流小哥11 小时前
Qt 动画学习 入门Qt,怎能少了学动画!
开发语言·qt·学习