
c语言入门
文章平均质量分 61
旨在帮助初学者系统地掌握C语言的基础知识和编程技巧。从最基础的语法规则、数据类型、控制结构,到函数、数组、指针等重要概念,专栏将通过通俗易懂的讲解和实用的例子,带领读者一步步深入理解C语言的核心要素。
糖果罐子♡
精通单片机 c语言 嵌入式工程师
展开
-
基本数据类型
从今天开始就带大家开始 c语言的进阶,可以帮助大家更好的了解 c语言(之前写了c语言的入门课程,有兴趣的同学可以去看一看)。原创 2023-01-08 21:03:59 · 162 阅读 · 0 评论 -
C语言 枚举,枚举设置指定值
枚举:关键词 enmu。(一组有名字的 int 类型的数据类型)例如:enum color { yellow, red, black, white, pink, blue }; / / 定义了一个数据类型,该整型类型有 6 个数据,默认是从 0 开始,依次递增一个。yellow 是0 的名字,可以直接使用yellow代替0,yellow 不是变量名,就是一个名字,代表数字0.enum color co = yellow;求枚举类型的大小,仍然可以使用 sizeof 计算。例如:sizeof (原创 2022-06-01 16:10:04 · 2388 阅读 · 0 评论 -
c语言 函数指针做结构体成员,结构体的大小,联合体共用体 union
结构体内不可以放函数,但是可以放函数指针。int sum(int a,int b){return a + b;}struct Node{int a;int ( * p)( int a, int b); / / 成员是函数指针} no = { 12, sum };结构体的大小,用 sizeof 计算,并不是简单是计算结构体所有成员之和。sizeof ( struct Node );联合共用体:所有成员共用一块空间,起始地址一样。sizeof 得到最大成员的空间。union Un{原创 2022-05-31 22:44:19 · 1402 阅读 · 5 评论 -
c语言 结构体变量的定义初始化,成员的访问赋值,无名结构体
文章目录前言一、结构体成员:二、结构体变量的定义,初始化:总结前言----结构体概述:结构体就是将很多不同类型的数据包含在一起。比如里面包含学生姓名、年龄、成绩:char name[20] ; int age ; double score,这些包含的都叫做结构体的成员; 当信息非常多修改就会发生错误,用结构体就会比较方便。一、结构体成员:struct Node / / struct是结构体的标志。Node是结构体的名字。{char name [20]; / / 这三个叫做结构体的成原创 2022-05-30 13:26:31 · 3122 阅读 · 0 评论 -
c语言 字符串操作函数 strcpy, strcat, strcmp, strlen.
文章目录前言一、字符串拷贝函数:二、字符串拼接函数:三、字符串比较函数:四、字符串长度函数:总结前言字符串操作函数是用于操作字符串的。有的函数有新版和旧版,大同小异。字符串操作函数的头文件: string.h一、字符串拷贝函数:字符串拷贝:char str [ 20] = { 0 };旧版:strcpy ( str, “hello word” );新版: strcpy_s (str, 20,“hello world”); / / 20用于保护赋值字符串不越界。字符串拷贝n个:(将字原创 2022-05-28 23:36:43 · 688 阅读 · 0 评论 -
c语言 字符指针,字符串的输出
文章目录前言一、字符指针初始化:二、使用步骤总结前言一、字符指针初始化:一般写法:char * str = “hello wyy”;完美写法:const char * str = “hello wyy”;注释:const 就是常的意思,常量指针,指向常量字符串,因为字符串就是自身的数组名字。相当于:char a[10];char * str=a;字符串中间有 \0 :字符串只找结尾。若中间有 \0,则字符串结束;不管有多少个 \0,以第一个 \0 确定结尾。二、使用步骤总原创 2022-05-27 08:29:21 · 4331 阅读 · 0 评论 -
c语言 常量字符串及其初始化
文章目录前言一、常量字符串:二、常量字符串初始化:总结前言一、常量字符串:常量字符串: 需用双引号包着。例如:" hello " ," 你好 ".常量字符串的本质就是字符数组,该字符串就是数组的名字。访问常量字符串的个元素:" hello wyy" [0]" hello wyy" [1]“hello wyy” [2]…访问各元素可以输出,但是不能赋值修改,因为这是常量字符。常量字符串 自带 \0 结尾,例如:‘h’ ,‘e’ ,‘l’ ,‘l’, ‘o’ ,‘ ’, ‘w’, ‘y’原创 2022-05-26 10:56:11 · 1912 阅读 · 0 评论 -
c语言 字符数组,字符串
文章目录前言一、字符数组:二、使用步骤总结前言一、字符数组:字符数组:char str[5] = { ‘A’,66,‘C’ ,‘D’ ,69 }; / / 66换成大写字母就是B,69就是Echar str[5] = { ‘A’,66,‘C’ }; / / 初始化部分元素,其余默认是0char str[ ] = { ‘A’,66,‘C’ ,‘D’ ,69 }; / / 这样初始化时,可以不写个数例如:二、使用步骤总结...原创 2022-05-24 22:13:40 · 283 阅读 · 0 评论 -
c语言 calloc ,realloc 的使用
文章目录前言一、calloc的使用:二、realloc 的使用总结前言malloc , calloc, realloc 的是用来申请一段空间。一、calloc的使用:realloc 的用法和 malloc 的用法类似,只是,malloc 的参数有一个, realloc 的参数分开成了两个。realloc 的函数原型:void * calloc ( size_t, size_t Size );例如:int *p = (int * )malloc ( sizeof ( int ) * 10);原创 2022-05-24 13:12:33 · 398 阅读 · 0 评论 -
C语言 free ,_msize 的使用
文章目录前言一、free的使用:二、_msize的使用 :总结前言一、free的使用:free: 用来释放 malloc 所申请的空间。malloc 申请的空间,如果不使用需要释放,否则会造成内存泄露。free 不能释放非malloc 申请的空间,不能重复释放空间。free 的函数原型:void free ( void* _Balock );free ( p); / /直接释放首地址即可。演示:二、_msize的使用 :_msize :用来得到合法空间的大小。si原创 2022-05-24 10:48:44 · 2470 阅读 · 0 评论 -
C语言 堆区空间,malloc
文章目录前言一、堆区空间的理解:二、使用步骤总结前言一、堆区空间的理解:前面测试,普通的数组变量默认最大不能申请1M的空间,甚至远少于1M的空间,毕竟程序中的其他变量也需要使用空间。总共就1M,要省着用。想要使用更大的,没有限制的空间,C语言给我们提供了方式:如下:malloc // 申请空间,理论上物理内存有多大,就能申请多大,当然并不能,电脑系统运行其他软件按也需要空间。兄弟函数:calloc 和 realloc 均可以使用。free // 释放空间,申请的空间必须我们自己释放。原创 2022-05-23 13:53:34 · 2135 阅读 · 0 评论 -
C语言 函数指针
文章目录前言一、函数指针:二、演示:总结前言一、函数指针:函数也有地址,叫做函数地址:& fun() ;特点:函数名就是函数的地址:fun == & fun类型:去掉函数名,就是函数类型,比如:int fun ( int a, double b )的函数类型是 int ( int a, double b )函数指针就是: int ( * p) ( int a, double b ) = fun() ;定义规则和数组指针的定义方式一样。函数的调用:形式是原创 2022-05-21 20:47:28 · 567 阅读 · 0 评论 -
c语言递归函数
文章目录前言一、递归的理解:二、循环角度理解递归:总结前言一、递归的理解:递归函数:函数自己调用自己的,叫做递归调用。例如:void fun(void){printf ( “Hellow!” );fun();}二、循环角度理解递归:递归的本质就是循环。循环可以完全代替递归,但是递归在某些情况下代码会更简洁一点。可控递归三要素:void fun(int i) // 1.循环控制变量{if (i < 5) //2.循环的条件{printf(“%d\n”,i);fun原创 2022-05-21 19:55:45 · 163 阅读 · 0 评论 -
C语言 传址调用、二级指针做参数
文章目录前言一、传址调用二、二级指针做参数总结前言如何通过函数参数修改外部变量的空间呢?一、传址调用空间的操作有两种: 名字,地址。如果传名字不行,传地址一定可以。如果使用变量改变函数外部的参数时,要定义全局变量,如果使用局部变量的话,并不能实现该功能。例如:(不能实现改变外部变量的值)通过地址改变外部变量。如此,fun 内 p=&a, 所以 *p 就是外部的 a 了,可以修改。即: 要修改谁,就传递谁的地址,叫做传址调用。二、二级指针做参数传递二级指针:如果要修原创 2022-05-18 10:23:29 · 503 阅读 · 0 评论 -
c 语言 数组(一维)做函数参数
文章目录前言一、传递一维数组二、一维数组做参数总结前言函数参数:函数参数是函数内外连接的接口,可以互通数据。一、传递一维数组函数调用时,实参是给形参初始化,所以,实参传递什么类型的数据,形参就以什么类型去接住。比如一维数组,如下:函数 fun1 传递 a, 因为数组名就是数组的首地址,所以用 int * p形参。函数 fun2 传递 &a,是一维数组地址,所以用 int ( * p)[ ] 形参。二、一维数组做参数规则:数组形式做参数时,紧挨变量名的方括号会被解析成原创 2022-05-16 22:45:36 · 2844 阅读 · 0 评论 -
c 语言,函数返回值,return 的应用
文章目录前言一、函数返回值总结前言一、函数返回值例如:int fun (void) / /有返回值函数{printf(“Hellow world!\n”);return 2; / / 返回值可以是任意数值,将12 返回给 fun().}总结原创 2022-05-14 16:05:06 · 693 阅读 · 0 评论 -
c 语言 无参无返函数,函数的调用
文章目录前言一、函数的概述及其作用:二、使用步骤总结前言一、函数的概述及其作用:函数:c语言模块编程的核心语法。作用:将代码按照功能划分为一段一段的独立的代码,有利于代码的管理,调试,维护。二、使用步骤总结...原创 2022-05-12 08:59:44 · 8382 阅读 · 0 评论 -
c语言 指针的大小,void *
文章目录前言一、指针的大小:(一切指针都是如此)二、演示:总结前言变量有大小,同样指针也有它的大小。一、指针的大小:(一切指针都是如此)不同编译环境下,指针的大小不一样:32 位编译环境下,是4 字节64 位编译环境下,是8 字节二、演示:总结大家看后自己运行实现一下。...原创 2022-05-09 20:01:03 · 2200 阅读 · 0 评论 -
c语言 二维数组指针
文章目录前言一、二维数组指针的定义:二、二维数组指针遍历数组元素:总结前言前面我们讲了一维数组指针,今天我们讲一下二维数组指针。一、二维数组指针的定义:概述: 二维数组指针的定义就是把一维数组换成二维数组。二维数组的各个元素也都是地址。步骤:int a[2][3] = { {1,2,3},{4,5,6} }; / / 定义一个二维数组int (*p)[2][3] = &a; / / a 是整个二维数组的地址int (*p)[2][3] 为二维数组指针类型,p ==&原创 2022-05-08 17:11:01 · 9343 阅读 · 0 评论 -
c语言,一维数组指针
文章目录前言一、一维数组指针的定义:二、一维数组指针的推导及使用:三、补充:总结前言今天我们讲一下一维数组指针。一、一维数组指针的定义:概述: 数组指针,就是数组类型的指针。数组里面的 每一个元素都是一个地址 。可以让 数组指针指向一个数组的地址 ,通过地址遍历数组的各个元素。定义一维数组指针的步骤:int a[5] = {4,5,6,7,8}; / / 定义一个数组int (*p)[5] = &a; / / 定义一个数组类型的指针指向数组a的地址注意:int [5]是数组类原创 2022-05-08 15:49:45 · 4735 阅读 · 1 评论 -
c语言 数组名和下标运算符
文章目录前言一、数组名:二、下标运算符 [ ]总结前言今天讲一些数组的属性 和下标运算符 的一些应用,算是一个必须要掌握的小的知识点了。一、数组名:前面我们稍微提过数组的属性:数组名就是首元素的首地址,即 &a[0]==a;则:int *p = &a[0] ; 也可写成 int *p = a ;两者一摸一样,平时都是用第二种,因为写起来比较方便。二、下标运算符 [ ]对于数组:例如: int a[5] = {5,6,7,8,9}; / / 定义一个数组由于原创 2022-05-07 17:06:40 · 3792 阅读 · 2 评论 -
c语言 数组与指针
文章目录前言一、数组指针的概述:二、数组指针遍历数组:三、数组指针遍历数组元素的应用:总结前言之前我们讲了指针数组,今天讲一下数组指针。一、数组指针的概述:数组指针就是数组的指针,就是指向数组的指针。int a [5] = {1,2,3,4,5}; / / 定义一个数组int *p = &a[0]; / / 定义一个指针指向数组的首地址,由于 数组的首地址就是数组名,所以&a[0]==a; 则可写为 int * p = a;则此时的指针 p 就是数组指针。二原创 2022-05-07 08:45:03 · 403 阅读 · 0 评论 -
c语言 指针的偏移计算
文章目录前言一、指针偏移的概述:二、指针偏移的应用:总结前言指针可以进行加减运算,且只能进行加减计算,叫做指针偏移。今天我们就讲解一下什么是指针偏移。一、指针偏移的概述:前面说指针的类型决定了指针的操作规则。int *p1 指针 *p1 一次操作4字节空间,float *p2 指针 *p2一次操作4字节空间,double *p3 指针 *p3 一次操作8字节空间。指针可以进行加减运算,且只能进行加减计算,叫做指针偏移。加减n ,实则加减 n 个类型大小。如下:p1+1 , 1为原创 2022-05-06 21:22:07 · 6172 阅读 · 1 评论 -
c语言 指针数组
文章目录前言一、指针数组的定义声明,赋值:二、指针数组的应用:总结前言今天我们讲解一下什么是指针数组。一、指针数组的定义声明,赋值:什么是指针数组呢?指针数组 :就是首先定义一个数组,数组里面的每一个元素都是一个地址。例如:int a=1, b=2, c=3;int * d [5] = {&a,&b,&c};指针数组 * d[5] 的每一个元素都是一个变量的地址,则 d [1] 就是&b, * d [1] ==* &b == b;所以 * d原创 2022-05-06 20:15:48 · 8399 阅读 · 1 评论 -
c语言 二级指针
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、pandas是什么?二、使用步骤总结前言前面我们学习了一级指针操作变量,那什么是二级指针?二级指针又如何操作变量呢?一、pandas是什么?二、使用步骤总结...原创 2022-05-06 19:35:57 · 1102 阅读 · 0 评论 -
c语言 指针的地址操作符 *
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、a, &a, p, *p, *&a 的关系:二、计算规则:总结前言如何通过地址操作空间? 使用内存操作符。一、a, &a, p, *p, *&a 的关系:a 是某个变量。&a 是变量 a 所在的地址。int *p=a; / / p里面装着 a 的地址。*p 里面装着 a 的数据。*&a 里面装着 a 的数据。即:*&a 相当于变量 a ,.原创 2022-05-04 20:25:57 · 1262 阅读 · 0 评论 -
c语言 指针的赋值
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、指针的赋值二、注意点总结前言如果一个指针指向一个变量的地址,如何通过指针来改变该变量的值呢?一、指针的赋值例如:int * p;int a=3, b=4;p= &a; / /指针 p 指向变量 a 的地址。p=&b; / /指针 p 重新指向变量 b 的地址。二、注意点指针变量也是变量,可以以装别的地址,但是要是同类型的。重新赋值,也叫重新指向。总结指针这方面知识比较难,.原创 2022-05-04 19:26:29 · 23254 阅读 · 0 评论 -
二维数组的大小
二维数组的大小文章目录二维数组的大小前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.原创 2022-05-04 15:54:56 · 5856 阅读 · 0 评论 -
二维数组的初始化,下标,遍历,及数组间的赋值
二维数组的初始化,下标,遍历,及数组间的赋值前言今天讲解一维数组的升级版,二维数组。一、二维数组与一维数组的比较int a [5] ; / /一维数组int c [3] [4]; / /二维数组一维数组:元素是 数据类型 的数组。二维数组:元素是 一维数组 的数组。二维数组一般理解为行,列;int a[行][列]。例如 :int a[3][4],即为3行4列。二、二维数组的初始化int a[3][2] = { { 1,2 } , { 3,4 } , { 5,原创 2022-05-03 22:11:27 · 6586 阅读 · 0 评论 -
C语言,数组的类型,大小
C语言,数组的类型,大小前言数组可以存放很多元素,可是如何计算数组的大小呢?一、数组的类型int a[ 5 ] ={1,2,3,4,5};数组的类型:int [5], 去掉变量名,就是数组的类型,这就是5个int 类型元素的数组类型。例如: double [20] ,float [4] 等等,都是不同类型的数组。二、数组的大小计算数组的大小,需用 sizeof 函数。数组的大小就是所有元素的大小之和。口算:例如:int a[5] 的大小就是 sizeof(int)*5为20原创 2022-05-03 11:44:09 · 6989 阅读 · 0 评论 -
数组的声明,定义,访问,循环遍历
数组的声明,定义,访问,循环遍历前言int a=2; a是一个变量,一次只能装1个数据,如果我们有100个数需要存储,那怎末办呢?所以引入了数组。一、数组的声明数组:用来装一组数的类型。声明形式如下:int a [10]; / /声明数组aint 表示该数组用来装 int 类型的元素,其他的形式就写其他的,例如:double [10];a 是数组名字,是合法的c语言标识符即可;[ ] 是指示的作用,表示变量 a 是数组变量; 若没有[ ], 就是普通的整型变量。10 表示该数组最原创 2022-05-02 09:07:05 · 1860 阅读 · 0 评论 -
C语言,跳出多层循环
C语言,跳出多层循环前言对于多循环的函数,我们怎末跳出循环呢?现在讲两种方法跳出循环。关于return 跳出循环的我们之后再补充。一、循环跳出,接力跳使用多个break 接力跳出循环,break 跳出所在结构。例:有原先程序若要跳出最外面的循环,则再次使用一个break结构,如下图:即可跳出外面的循环。二、goto loop; loop:跳出循环goto loop;loop:结构,在实际应用上使用较少,大家可以作为补充学习。若程序运行到goto loop;处,可直接跳到loop:原创 2022-04-30 21:43:02 · 14892 阅读 · 1 评论 -
指针的介绍,定义,初始化
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、指针的介绍二、指针的定义三、指针的初始化总结前言一、指针的介绍每个变量都有自己的地址,地址也是数据,就用地址类型的变量来装,地址类型就叫做指针类型,即指针类型定义的变量就是专门装地址的。基本数据类型变量的地址,用对应的基本数据类型指针变量来装。二、指针的定义定义指针变量:short *pc;char *pc;int * pc;注意点:short * ,char *,int *叫指针类型,pc 是.原创 2022-05-04 16:55:33 · 2603 阅读 · 0 评论