当前位置: 首页 > article >正文

C语言:初识入门篇

专栏说明:本专栏用于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 100
	printf("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";//默认结束标志\0
	char 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.kler.cn/a/377305.html

相关文章:

  • ROS1入门教程6:复杂行为处理
  • 重温设计模式--享元模式
  • 探寻快速排序的局限性及其优化策略
  • 汽车IVI中控开发入门及进阶(47):CarPlay开发
  • Linux的VIM基本操作
  • 任务2 配置防火墙firewalld
  • SpringBoot微服务Feign抽取公共模块
  • 基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
  • [MySQL#11] 索引底层(2) | B+树 | 索引的CURD | 全文索引
  • Linux系列-进程的概念
  • AWS RDS MySQL内存使用
  • vscode makfile编译c程序
  • HTML鼠标移动的波浪线动画——页面将会初始化一个Canvas元素,并使用JavaScript代码在Canvas上绘制响应鼠标移动的波浪线动画
  • k8s Sidecar代理
  • 清华双臂机器人扩散大模型RDT:先预训练后微调,支持语言、图像、动作多种输入
  • TCP/IP协议简介
  • Vue 组件基础(五)
  • 【C++刷题】力扣-#645-错误的集合
  • SPRD Android 14 Launcher 3 中添加长按桌面图标启动自由窗口模式功能
  • 像mysql一样查询es
  • 使用Docker Compose构建多容器应用
  • 【Python项目管理】“无法创建虚拟环境”报错原因及解决方法
  • Maven(24)如何使用Maven进行代码覆盖率分析?
  • Linux-c 网络socket练习1
  • C++_STL_xx_番外01_关于STL的总结(常见容器的总结;关联式容器分类及特点;二叉树、二叉搜索树、AVL树(平衡二叉搜索树)、B树、红黑树)
  • C#与C++结构体的交互