哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘
一、什么是C语言,C语言具体是什么?🙌
C语言是什么,百度一下你就知道!这里就不多赘述啦!在这里,我就用一句俗语概括一下它的重要性吧:==“C生万物”==。我这里大致将C语言整体语言结构大致分为:==数据类型,常量、变量,字符串+转义字符+注释,选择语句,循环语句,函数,数组,操作符,常见的关键字,define定义的常量和宏,指针,结构体。== 接下来,我将围绕👇方面对需要注意的地方重点介绍。
1.1数据类型🙌
在C语言中给我们提供好的常见的==数据类型==有以下几种。
面对那么多的数据类型,是不是有点不知所措啊?我一开始了解到有这么多的数据类型就是这种感觉。不过不要担心,我带着大家一步步的了解他们。首先咋们先看看他们各自所占空间的大小,这里可以用==sizeof关键字==来look一下他们各自所占空间的大小(已==字节==为单位)
从下面的代码运行图可以展现出他们各自所占空间的大小啦!这里要悄咪咪的告诉大家一个很重的事情:在32位系统下,指针所占的空间大小..........诶诶,还是在后面俺介绍指针的时候再说叭,不急不急。
在==C语言==中是没有字符串数据类型的,一般我们可以用==字符数组来存储字符串==。而在==C++==中就有==字符串数据类型string==。C语言定义好的数据类型,还远远无法描述我们这个精彩的世界,这就需要我们自定义一些数据类型啦!这就要使用到我们的结构体==struct==,这里就不介绍啦,精彩在后文!
然后,字节是什么呢?这里简单的通过画图然大家简单的了解一下:
1.2 常量、变量🙌
对于常量、变量这些概念是什么?如何定义和使用?这些大家都会的东西我就不一一赘述啦!咋们直接上==重点==
主要有以下几个值得大家注意的地方:
**1. 变量的命名:
(1)只用由字母(包括大小写)、数字和下划线 _ 组成。
(2)不能以数字开头。
(3)长度不能超过63个字符。
(4)变量名区分大小写且不能使用关键字命名。
- 变量的分类:局部变量+全局变量。
- 局部变量的优先使用如何理解?**
这里用图来展示以下局部变量的优先使用:😍
这里小结一下:==当局部变量和全局变量同名的时候,“局部优先”。==
- 局部变量和全局变量的生命周期:
这里所说的生命周期,通常我们用作用域来理解,也就是这个变量的作用范围。简单的来说,局部变量的作用域:==局部变量所在的局部范围==。全局变量的作用域:==整个工程。==
代码结果运行图:👇
这里小结一下:局部变量的作用域:==局部变量所在的局部范围==。
**全局变量的作用域:**==整个工程。==
介绍了那么多变量的知识。现在我们浅谈一下我们的常量。
在C语言中,可将常量分为👇几类:
- 字面常量
- const修饰的常变量
- #define定义的标识符常量
- 枚举常量
接下来用代码解析图辅助大家更好的理解:😍
这里n虽然被const修饰,具有了==常属性==,不能被修改,但是==本质上还是变量==,所以不能用来指定数组的大小。C99中,引入了:变长数组的概念,变长数组的大小是可以使用变量来指定的,但是数据不能初始化。VS2019是不支持C99中的变长数组的,所以没法验证。
define定义的标识符常量代码:👇
#include<stdio.h>
#define 定义的标识符常量
#define MAX 1000
int main()
{
int arr[MAX];
#define MIN 0
printf("%d\n", MAX);
//MAX = 2000;
printf("%d\n", MIN);
return 0;
}
枚举常量定义的代码:
#include<stdio.h>
声明的一个表示性别的枚举类型
enum Sex
{
下面三个符号是Sex这个枚举类型的未来的可能取值
枚举常量
MALE=5, //0 //这里如果初始化,则第一个成员,默认为0,依次递增;如果初始化了,则按照初始化的数值依次递增下去。
FEMALE,//1
SECRET //2
};
int main()
{
//enum Sex s = FEMALE;
printf("%d\n", MALE);
printf("%d\n", FEMALE);
printf("%d\n", SECRET);
//MALE = 5;
return 0;
}
//%d - 打印整型
//%s- 打印字符串
//%c - 打印字符的
1.3 字符串+转义字符+注释🙌
首先先初步分析==字符和字符串==
- 在C语言我们表示一个字符的用单引号,例如:‘a’;用双引号来表示字符串"abcdef"。
- 字符串的定义,由于C语言没有字符串数据类型,所以在C语言中常用到字符数组,特别注意的是,其隐含\0,而单个字符定义则不包括\0。
👇我用代码图来辅助大家理解:😍
对应的代码:
#include <string.h>
#include<stdio.h>
int main()
{
//字符数组
char arr1[] = "abc";
char arr2[] = { 'a', 'b', 'c' };
printf("%s\n", arr1);
printf("%s\n", arr2);
return 0;
}
- 求字符串长度要使用strlen。strlen 是一个库函数,专门用来求字符串长度的。
我用👇 的代码图帮助大家理解:😍
对于转义字符,在C语言中有很多,我这里就列举几个比较常见的给大家认识认识:
转义字符 | 释义 |
---|---|
\0 | 换行 |
\ | 用于表示一个反斜杠,防止它被解释为一个转义序列符 |
\r | 回车 |
\t | 水平制表符 |
\ddd | ddd表示1~3个八进制的数字。如:\130 X |
\xdd | dd表示2个十六进制的数字。如:\x30 0 |
接下来用代码分析图帮助大家理解:😍
注释:注释虽然很简单,但是对于我们的帮助很大,当我们写一个非常复杂的项目时,或者在以后从事团队开发时,良好的编写==注释可以帮助我们更好的阅读代码,提高工作的效率==。废话不多讲,先介绍一下注释的使用方法和语法:😍
- // 表示注释一行
- /*..............
.................*/表示注释一段
1.4选择语句🙌
选择语句比较常见得有:
- if().....else if....else{};
- switch 语句;
首先介绍咋们最经典的if选择语句,这里写一个简易的代码图帮助大家了解了解
用一道题目来简单的了解一下switch的使用方法:
#include <stdio.h>
enum
{
Monday=1,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
Sunday,
};
int main()
{
int a =0;
scanf("%d",&a);
switch(a)
{
case Monday:
{
printf("Monday");
break;
}
case Tuesday:
{
printf("Tuesday");
break;
}
case Wednesday:
{
printf("Wednesday");
break;
}
case Thursday:
{
printf("Thursday");
break;
}
case Friday:
{
printf("Friday");
break;
}
case Saturday:
{
printf("Saturday");
break;
}
case Sunday:
{
printf("Sunday");
break;
}
}
return 0;
}
书写switch语句时,可不要忘记了他的两个好兄弟,==一个是case,另一个叫break==具体如何使用,我相信聪明的你可以通过上面的代码熟练掌握,也可以根据我写的代码借鉴学习一下,然后拿上面那道题练练手。👇我把这道题的链接给到大家。😘
链接: 牛客网入门题目--牛牛的一周
1.5循环语句🙌
我把C语言常用到的循环语句总结为以下几中:
- for循环
- while循环
- do......while循环
👇就简单写个代码,利用while书写一个栗子。会书写一种其他自然也就不是难事,话不多说,上代码!😍
#include<stdio.h>
int main()
{
int line = 0;
printf("自主学习,励志敲完两万行代码\n");
while (line<20000)
{
//...
printf("敲代码:%d\n", line);
line++;
}
if (line >= 20000)
printf("好offer\n");
return 0;
}
1.6 数组🙌
接下来,我给大家介绍以下数组的大概,==旨在让大家初识数组为目的==。在以后的博客中会对这篇提到的各点都会进行详细的,刨根问底的给大家分析,那就先期待这吧!数组,顾名思义,可以简单的理解为==一类数的集合。==
我们可以将数组分为很多很多种类型,大家以后学习比较常见的有以下几种:
- 整形数组
- 浮点型数组
- 指针数组
- 一维数组
- 二维数组
其实关于数组的类型还有很多,这里只是举了几种比较常见的,大家在学校可能会学到的数组知识,如果还有uu没有听说过这些名称的话,下来一定要好好恶补一下咯。在介绍上述方面的时候已经运用到了数组的创建,定义代码,而且这个也比较简单,这里就不详细赘述啦,有关数组的难点,易错点,==后期我会专门出一篇博客来剖析数组,届时欢迎大家前来给个赞赞,当然最重要是想把知识分享给大家啦!== 😘
1.7函数🙌
函数是什么呢?其实这和我们数学课本上的函数功能类似但也有不同之处。
接下来就通过一道题目让大家简单的了解一下函数的使用和体会C语言的函数之美。废话不多说,咋们直接上代码!😉
#include <stdio.h>
int Add(int a,int b)//Add函数的定义
{
int sum = 0;
sum = a + b;
return sum;
}
int main()
{
int a = 3;
int b = 4;
scanf("%d %d", &a, &b);
int s = Add(a,b);//调用Add函数
printf("%d", s);
return 0;
}
函数的特点就是:==简化代码,代码复用。==当我们以后写的项目比较复杂,代码量上万行时,函数的优势和作用将更大的展现出来。
1.8 操作符🙌
在C语言中,有各种各样十分有用的==操作符==。如下图所示。如果能够熟练地掌握各种操作符,会让自己的代码能力更上一层楼。
还有一种操作符叫: 逗号表达式:exp1,exp2,exp3.........expn
逗号表达式的结果只跟逗号表达式最后一个数有关,跟前面的没有半毛钱关系。
1.9 常见的关键字🙌
在C语言中,也存在着很多十分有用的关键字,总的来说可以概括为下面这些关键字。如下图所示:
这里就不带着大家一一分析啦,先挑出几个比较常见、常使用的关键字简单了解一下。
==typedef== 起到重命名的作用,这个关键字在以后大家学到数据结构的时候经常能够使用到。接下来用代码来帮助大家理解一下:
typedef 类型重命名 - 别名
typedef struct Node
{
int data;
struct Node* next;
}Node;//将struct Node命名为Node。
关键字static:在C语言中,static用来修饰变量和函数的。
- 修饰局部变量-称为静态局部变量
- 修饰全局变量-称为静态全局变量
- 修饰函数-称为静态函数
在使用static时,有👇几个注意的点,大家需要了解和关注的:
- .==static修饰局部变量: 一个普通的局部变量是放在栈区的,而被static的修饰的局部变量,是放在内存的静态区的 ,存储位置发生了变化,使得局部变量出了作用域不会销毁,影响了变量的生命周期,但作用域不受影响==
- ==static修饰全局变量: 一个全局变量在整个工程中都可以使用的!全局变量是具有外部链接属性的,在其他源文件内部只要适当地声明就可以使用。而static修饰全局变量,这时全局变量的外部链接属性就变成了内部链接属性,只能在自己所在的.c文件内部使用,在其他.c文件无法使用,影响了变量的作用域。==
2.1 define定义的常量和宏🙌
#define 定义常量和宏
#define M 100 //这里的M就是100
#define STR "hello bit"//这里的STR就是字符串 "hello bit"
2.2 指针🙌
指针这个东西想必学过一点C语言的都知道它是C语言知识的一个重点和难点。但也不是说指针难到学不会那种,干就完事咯!指针的类型也有很多。接下来就用代码来简单的初识一下指针。
int main()
{
int a = 10;
int* pa = &a;//把pa叫指针变量, & - 取地址操作符
printf("%d\n", a);
//*pa = 20; //* 解引用操作符
printf("%d\n", a);
printf("%p\n", &a);//这里的%p是专门用来打印地址的。
printf("%d\n", *pa);
return 0;
}
2.3 结构体🙌
在前面的数据类型时,我提到了一下结构体。在C语言中,结构体发挥着巨大的作用。我们可以 利用结构体来自定义我们想要的数据类型。 接下来,我用一段简单的代码,来介绍👇结构体的使用语法。
struct Student
{
char name[20];//名字
int age;//年龄
char id[15];//学号
float score;//成绩
};
int main()
{
struct Student s1 = { "张三", 20, "2022010823", 88.5f };//定义结构体对象以及初始化
printf("%s %d %s %f\n", s1.name, s1.age, s1.id, s1.score);
struct Student* ps = &s1;//定义结构体指针并指向s1的位置
printf("%s %d %s %f\n", (*ps).name, (*ps).age, (*ps).id, (*ps).score);//结构体变量.成员
printf("%s %d %s %f\n", ps->name, ps->age, ps->id, ps->score);//结构体指针->成员
return 0;
}
总结撒花🙌
==本篇文章旨在带领大家初识C语言==,让大家对C语言有一个大概的了解。后期我还会对每一部分进行刨根挖底的了解和学习,届时再将本人的学习心得分享给各位uu们。如果我写的有什么的不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘