C语言:初识入门篇

devtools/2024/11/6 23:01:04/

专栏说明:本专栏用于C语言学习,文章中出现的代码由C语言实现,如对你学习有所帮助,可以点赞收藏关注,感谢三连。


  • 博客主页:Duck Bro 博客主页
  • 系列专栏:C语言专栏
  • 关注博主,后期持续更新系列文章
  • 如果有错误感谢请大家批评指出,及时修改
  • 感谢大家点赞👍收藏⭐评论✍

C语言:初识入门篇

目录

  • C语言:初识入门篇
    • 1. C语言是什么
    • 2. 编写一个C语言程序
    • 3. 数据类型
      • 3.1 常见的数据类型
      • 3.2 数据类型的大小(内存大小)
      • 3.3 类型的使用
    • 4. 变量、常量
      • 4.1 定义变量
      • 4.2 变量的分类(局部、全局)
      • 4.3 变量的作用域和生命周期
      • 4.4 常量
    • 5. 字符串
    • 6. 转义字符
    • 7. 注释
    • 8. 分支语句
    • 9. 循环语句
    • 10. 函数
    • 11. 数组
      • 11.1 数组定义
      • 11.2 数组下标
      • 11.3 数组使用
    • 12. 操作符
    • 13. 关键字
    • 14. #define定义宏
    • 15. 指针
    • 16. 结构体


1. C语言是什么

C语言是一种通用的高级编程语言,由AT&T贝尔实验室的Dennis Ritchie于1972年开发。C语言具有简单、高效、可移植性强等特点,广泛应用于系统软件、嵌入式系统和游戏开发等领域。

C语言在编程界具有广泛的影响力,很多其他编程语言都受到了C语言的影响,如C++、Java、C#等。许多操作系统和应用程序都是用C语言开发的,因此学习和掌握C语言对于编程人员来说是非常重要的。


2. 编写一个C语言程序

//代码在VS2019编译器上编写
#define  _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{printf("hello world");printf("Duck Bro");printf("CSDN");return 0;
}

在这里插入图片描述


3. 数据类型

3.1 常见的数据类型

char        //字符数据类型
short       //短整型
int         //整形
long        //长整型
long long   //更长的整形
float       //单精度浮点数
double      //双精度浮点数

3.2 数据类型的大小(内存大小)

#include <stdio.h>
int main()
{printf("char: %d\n", sizeof(char));printf("short: %d\n", sizeof(short));printf("int: %d\n", sizeof(int));printf("long: %d\n", sizeof(long));printf("long long: %d\n", sizeof(long long));printf("float: %d\n", sizeof(float));printf("double: %d\n", sizeof(double));printf("long double: %d\n", sizeof(long double));return 0;
}

在这里插入图片描述

3.3 类型的使用

int main()
{char name = "Duck Bro"; //昵称int year = 2;			//码龄int weight = 57;        //体重int height = 178;		//身高return 0;
}

4. 变量、常量

不变的值,C语言中用常量的概念来表示,变得值C语言中用变量来表示。

4.1 定义变量

	char name = "Duck Bro"; //昵称int year = 2;			//码龄int weight = 57;        //体重int height = 178;		//身高

4.2 变量的分类(局部、全局)

  • 局部变量
  • 全局变量
#include<stdio.h>
int c = 100;//全局变量
int main()
{int a = 0;//局部变量int b = 1;//局部变量int c = 200;//局部变量printf("a=%d\n", a);printf("b=%d\n", b);printf("c=%d\n", c);return 0;
}

在这里插入图片描述

当局部变量和全局变量同名的时候,局部变量优先使用

4.3 变量的作用域和生命周期

作用域
作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的而限定这个名字的可用性的代码范围就是这个名字的作用域。

  • 局部变量的作用域是变量所在的局部范围。
  • 全局变量的作用域是整个工程。

生命周期
变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

  • 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  • 全局变量的生命周期是:整个程序的生命周期。

4.4 常量

常量的几种形式

  • 字面常量
  • const 修饰的常变量
  • #define 定义的标识符常量
  • 枚举常量
#include<stdio.h>
//枚举
enum Sex
{MALE,FEMALE,SECRET
};
int main()
{//字面常量13;100;//const修饰常变量const int a = 1000;//a = 1000;  不能进行修改printf("a=%d\n", a);//#define标识符常量#define MAX 100printf("MAX=%d\n", MAX);//枚举常量printf("male=%d\n", MALE);printf("female=%d\n", FEMALE);printf("secret=%d\n", SECRET);return 0;
}

在这里插入图片描述

5. 字符串

由双引号引起来的一串字符称为字符串字面值,或者简称字符串。

"hello world \n"

注:字符串的结束标志是一个 \0 的转义字符。在计算字符串长度的时候 \0 是结束标志,不算作字符串内容。

示例代码

#include <stdio.h>
int main()
{char arr1[] = "Duck";//默认结束标志\0char arr2[] = { 'D', 'u', 'c','k'};//没有结束标志char arr3[] = { 'D', 'u', 'c','k', '\0' };//有结束标志printf("%s\n", arr1);printf("%s\n", arr2);printf("%s\n", arr3);return 0;
}

在这里插入图片描述

6. 转义字符

常见的转义字符

转移字符释义
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\'用于表示字符常量’
\“用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符。
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。 如: \130 X
\xdddd表示2个十六进制数字。 如: \x30 0

示例代码

#include <stdio.h>
int main()
{//printf("c:\code\test.c\n");printf("c:\\code\\test.c\\\n");//打印地址printf("\'\n");//打印单引号printf("\"\n");//打印双引号return 0;
}

在这里插入图片描述

7. 注释

注释是在程序中用来解释代码的文本。它们通常在代码中以特定的格式放置,被编译器或解释器忽略,不会对程序的执行产生任何影响。

注释可以用来提供关于代码功能、目的、参数、变量等方面的信息,使其他人能够更好地理解和维护代码。注释还可以用于调试代码,帮助程序员找出错误和改进代码。

注释有两种风格:
C语言风格的注释,缺陷不能嵌套注释

/*xxxxxx*/

C++风格的注释,可以注释一行也可以注释多行

 //xxxxxxxx

8. 分支语句

  • if
  • else
#include<stdio.h>
int main()
{int year = 0;printf("请输入年龄:");scanf("%d", &year);if (year < 2){printf("完成不了");}else {printf("成功完成");}return 0;
}

在这里插入图片描述

9. 循环语句

  • while
  • for
  • do…while
#include<stdio.h>
int main()
{int num = 0;//while循环while(num<=10){printf("%d ", num);num++;}printf("\n");//for循环int i = 0;for (i = 0; i <= 10; i++){printf("%d ", i);}return 0;
}

10. 函数

函数是一段完成特定任务的代码块,可以在程序中多次调用。函数的特点就是简化代码,代码复用。

//以下代码是num3=num1+num2
#include<stdio.h>
int main()
{int num1 = 0;int num2 = 0;int num3 = 0;num1 = 2;num2 = 3;num3 = num1 + num2;printf("%d\n", num3);return 0;
}
//以下代码是使用函数Add代替输入进行加法运算
#include<stdio.h>
int Add(int x, int y)
{return x + y;
}
int main()
{int num1 = 0;int num2 = 0;int num3 = 0;num1 = 2;num2 = 3;num3 = num1 + num2;printf("%d\n", num3);printf("%d\n",Add(3, 4));return 0;
}

11. 数组

11.1 数组定义

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素

11.2 数组下标

C语言规定:数组的每个元素都有一个下标,下标是从0开始的。

在这里插入图片描述

数组可以通过下标来访问的。

11.3 数组使用

#include<stdio.h>
int main()
{int i = 0;//定义一个数组int arr1[10] = {1,2,3,4,5,6,7,8,9,10};//使用for循环,遍历数组for (i = 0; i < 10; i++){//从数组下标0开始输出printf("%d ", arr1[i]);}return 0;
}

12. 操作符

算术操作符

+   	加法
-		减法
*		乘法
/		除法
%		取模

移位操作符

>>		右移
<<		左移

位操作符

&|^		异或

赋值操作符

=		赋值
+=		加等
-=		减等
*=		乘等
/=		除等
&=		与等
^=		异或等
|=		或等
>>=		右移位等
<<=		左移位等

单目操作符

!       逻辑反操作
-       负值
+       正值
&       取地址
sizeof  操作数的类型长度(以字节为单位)
~       对一个数的二进制按位取反
--      前置、后置--
++      前置、后置++
*       间接访问操作符(解引用操作符)
(类型)	强制类型转换

关系操作符

>		大于
>=		大于等于
<		小于
<=		小于等于
!=		不相等
==		相等

逻辑操作符

&&  	逻辑与
||  	逻辑或

条件操作符

exp1 ? exp2 : exp3   如果exp1满足,则输出exp2;不满足,则输出exp3

逗号表达式

exp1, exp2, exp3, …expN		依次进行运算,结果输出最后一个表达式

下标引用、函数调用和结构成员

[]		下标引用
()		函数调用
. ->	结构体成员

13. 关键字

auto  break   case  char  const   continue  default  do   double else  enum   
extern float  for   goto  if   int   long  register    return   short  signed
sizeof   static struct  switch  typedef union  unsigned   void  volatile  while

14. #define定义宏

//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{int sum = ADD(2, 3);printf("sum = %d\n", sum);sum = 10*ADD(2, 3);printf("sum = %d\n", sum);return 0;
}

15. 指针

指针是C语言中一种特殊类型的变量,它可以存储内存地址。每个变量在内存中都有一个地址,指针可以用来存储这个地址,从而可以通过指针来访问或修改对应地址上的数据。

通过指针,我们可以动态地分配和释放内存,以及在程序中传递和修改复杂的数据结构。

在C语言中,可以通过使用"*"运算符来声明一个指针变量,如:

int *ptr;

这样就声明了一个名为ptr的指针变量,可以存储int类型变量的地址。可以使用"&"运算符来获取一个变量的地址,如:

int num = 10;
int *ptr = &num;

这样就将变量num的地址赋值给了指针变量ptr。

指针变量也可以通过解引用运算符"*"来访问或修改对应地址上的数据,如:

*ptr = 20;

这样就将20赋值给了ptr所指向的地址上的数据。

使用指针可以方便地进行内存操作和数据传递,但同时也需要注意指针的合法性和安全性,避免出现悬空指针和野指针的问题。

16. 结构体

在C语言中,结构体是一种用户自定义的数据类型,它可以存储不同类型的数据项。结构体由多个数据成员组成,每个数据成员可以是任意C语言数据类型,包括基本数据类型和其他结构体类型。

结构体的定义使用关键字struct,结构体的数据成员使用逗号分隔。结构体定义的一般形式如下:

struct 结构体名 
{数据类型 成员名1;数据类型 成员名2;// ...
};

定义一个学生结构体,它包含学生的姓名、年龄和成绩:

struct Student 
{char name[50];int age;float score;
};

结构体的初始化

#include<stdio.h>
struct Student 
{char name[50];int age;int score;
};
int main()
{struct Student s = { "Duck Bro",20,99 };printf("name = %s age = %d score = %d\n", s.name, s.age, s.score);return 0;
}

在这里插入图片描述


在这里插入图片描述


http://www.ppmy.cn/devtools/131857.html

相关文章

利用pythonstudio写的PDF、图片批量水印生成器,可同时为不同读者生成多组水印

现在很多场合需要将PDF或图片加水印&#xff0c;本程序利用pythonstudio编写。 第一步 界面 其中&#xff1a; LstMask:列表框 PopupMenu:PmnMark LstFiles:列表框 PopupMenu:PmnFiles OdFiles:文件选择器 Filter:PDF文件(.PDF)|.PDF|图像文件(.JPG)|.JPG|图像文件(.png…

uniapp使用echart

一 直线图 三中国地图 <template><view class"content"><l-echart ref"chartRef"></l-echart></view> </template><script setup> import { ref, onMounted } from "vue"; import geoJson from &quo…

利用游戏引擎的优势

大家好&#xff0c;我是小蜗牛。 在当今快速发展的游戏产业中&#xff0c;选择合适的游戏引擎对开发者来说至关重要。Cocos Creator作为一款功能强大且灵活的游戏引擎&#xff0c;为开发者提供了丰富的工具和资源&#xff0c;使他们能够高效地开发出优秀的游戏。本文将探讨如何…

24.11.6 PySimpleGUI库和pymsql 库以及人脸识别小项目

PySimpleGUI 库 PySimpleGUI 是一个用于简化 GUI 编程的 Python 包&#xff0c;它封装了多种底层 GUI 框架&#xff08;如 tkinter、Qt、WxPython 等&#xff09;&#xff0c;提供了简单易用的 API。PySimpleGUI 包含了大量的控件&#xff08;也称为小部件或组件&#xff09;&…

国家级汽车检测中心联合开源网安打造安全解决方案,提升行业安全检测水平

某汽车检测中心是我国交通运输行业智能商用车领域的国家级检测中心&#xff0c;以商用车智能化、网联化检测能力引领&#xff0c;拥有交通运输部及工业和信息化部认定的“智能网联汽车自动驾驶封闭测试场地测试基地”和“交通运输部自动驾驶交通技术研发中心”&#xff0c;主要…

GPT-SoVITS 部署方案

简介 当前主流的开源TTS框架&#xff0c;这里介绍部署该服务的主要流程和我在使用过程中出现的问题。 使用的技术 Docker、Jupyter、Python、C# 部署 docker的使用 拉取命令 docker pull jupyter/base-notebook:python-3.10.11jupyter的访问 docker运行以后可以直接使用…

【C++】RBTree——红黑树

文章目录 一、红黑树的概念1.1 红⿊树的规则&#xff1a;1.2 理解最长路径长度不超过最短路径长度的 2 倍1.3 红⿊树的效率 二、 红⿊树的实现2.1 红⿊树的结构2.2 红⿊树的插⼊2.2.1 红⿊树树插⼊⼀个值的⼤概过程 2.3 红⿊树的插⼊代码实现 一、红黑树的概念 红⿊树是⼀棵⼆…

Claude发布桌面客户端!新功能支持分析100页PDF的图像!

大家好&#xff0c;我是木易&#xff0c;一个持续关注AI领域的互联网技术产品经理&#xff0c;国内Top2本科&#xff0c;美国Top10 CS研究生&#xff0c;MBA。我坚信AI是普通人变强的“外挂”&#xff0c;专注于分享AI全维度知识&#xff0c;包括但不限于AI科普&#xff0c;AI工…