栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

初识C语言

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

初识C语言

文章目录
  • 前言
  • 一、什么是C语言
  • 二、第一个C语言程序
    • 如何打开VS2019创建项目?
  • 三、VS2019的一些常用快捷键
  • 四、数据类型
  • 五、变量,常量
    • 5.1局部变量和全局变量
    • 5.2变量的使用——初始化所有变量
    • 5.3外部全局变量的调用
    • 5.4常量的分类
  • 六、VS2019每次更新后如何让scanf每次打开都能用
  • 七、字符串+转义字符+注释
    • 7.1字符串
    • 7.2 转义字符
    • 7.3 注释
  • 八、选择语句
  • 九、循环语句
  • 十、函数
  • 十一、数组
    • 11.1数组的定义:一组相同类型元素的集合
    • 11.2 数组的下标
    • 11.3数组的使用
  • 十二、如何在vs2019窗口调试
  • 十三、%d %s的意思
  • 十四、三目操作符
  • 十五、关键字:typedef
  • 十六、关键字:static
  • 十七、#define定义常量和宏
  • 十八、指针!
    • 18.1 内存
    • 18.2如何在vs2019上查看内存
    • 18.3小科普:
    • 18.4 指针变量的大小
  • 十九、结构体


前言

某985金统系大一零基础纯小白,这是我自己这两个星期对c语言初次认识的结果与总结。初始C语言不必深究,先知道有这么个东西就行。就像高考数学一样,没有人直接上来就一轮,都是先粗略地整体学完再进行深究(别杠我呜呜我真的就这样学的)


一、什么是C语言

①是一门通用计算机编程语言,广泛应用于底层开发。
②硬件——驱动层——操作系统(windows linux mac)——应用软件
③操作系统之上称为上层软件 以下称为底层
④二进制的指令——汇编指令(助记符)——B语言——C语言
⑤为了统一C语言语法,美国国家标准局制定了ANSI C 目前2011年发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准
⑥编译器(将代码翻译成能让电脑执行看得懂的命令)主要有Clang、GCC、MSVC(VS2019就是用这个)
编译器:将C语言代码转换成CPU能够识别的二进制指令,也就是将代码加工成 .exe 程序;这个工具是一个特殊的软件,叫做编译器

二、第一个C语言程序 如何打开VS2019创建项目?

1.打开空项目
2.【视图】—【解决资源管理器】
3. 创建源文件(.c为后缀的叫源文件 .h叫头文件)
【源文件】-【添加】-【新建项】


4.修改名称为test.c


三、VS2019的一些常用快捷键
  1. 快速运行代码:ctrl+fn+f5
  2. 添加注释:ctrl+k+C
  3. 取消注释:ctrl+k+u
  4. ctrl+滚轮进行字体大小设置
  5. 监视:ctrl+f10 调试—窗口—监视—任意点击监视1—输入要监视的变量
  6. 深入函数内部监视:ctrl+f10运行到该函数所在行—按下ctrl+f11—右键点击该行—查看反编码

四、数据类型

结果分别是1、2、4、4、8、4、8

创建变量的本质:通过类型向内存申请空间

五、变量,常量 5.1局部变量和全局变量
  • ①不允许在同一个作用域中定义多个相同名称的变量
    比如:在一个班级中存在两个名字相同的学生王帅,当老师点王帅回答问题时,那个回答就冲突了。

  • ②允许在不同的作用域中定义多个相同名称的变量
    比如:两个班级中各有一个王帅,老师在A班中点王帅回答问题,不会有任何歧义。

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

5.2变量的使用——初始化所有变量

一定要注意!!!scanf要取地址&!!!!
5.3外部全局变量的调用

如果有来自其他地方的全局变量
用extern 变量类型 变量名字;

5.4常量的分类

①字面常量 ②const修饰的常变量 ③#define定义的标识符常量 ④枚举常量

#include 
//建议自己复制粘贴过去实操一遍
//举例
enum Sex
{
	MALE,
	FEMALE,
	SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
   //字面常量演示
   3.14;//字面常量
   1000;//字面常量
   
   //const 修饰的常变量
   const float pai = 3.14f;   //这里的pai是const修饰的常变量
   pai = 5.14;//是不能直接修改的!
   
   //#define的标识符常量 演示
#define MAX 100
   printf("max = %dn", MAX);
   
   //枚举常量演示
   printf("%dn", MALE);
   printf("%dn", FEMALE);
   printf("%dn", SECRET);
   //注:枚举常量的默认是从0开始,依次向下递增1的
六、VS2019每次更新后如何让scanf每次打开都能用

①打开everything搜索newc++
②找到文件并且打开路径
③拷贝文件到桌面 用记事本打开后复制粘贴那行代码
④用vs打开桌面上这份文件并且ctrl+s保存下来即可
⑤再用桌面文件替换原来那份newc++文件


七、字符串+转义字符+注释 7.1字符串
  • 由双引号引起来的叫做字符串 在c语言中他没有类型
  • 由单引号引起来的叫做字符 在c语言中他的数据类型是char
  • 字符串的结束表示是转义字符,在计算字符串长度时候不计入#include

//下面代码,打印结果是什么?为什么?(突出''的重要性)
int main()
{
   char arr1[] = "bit";
   char arr2[] = {'b', 'i', 't'};
   char arr3[] = {'b', 'i', 't', ''};
   printf("%sn", arr1);
   printf("%sn", arr2);
   printf("%sn", arr3);
   return 0;
}

7.2 转义字符

空格也算是一个字符 t也只算一个字符

转义字符 释义
?
在书写连续多个问号时使用,防止他们被解析成三字母词
'
用于表示字符常量'
“
用于表示一个字符串内部的双引号
\
用于表示一个反斜杠,防止它被解释为一个转义序列符。
a
警告字符,蜂鸣
b
退格符
f
进纸符
n
换行
r
回车
t
水平制表符
v
垂直制表符
ddd
ddd表示1~3个八进制的数字。 如: 130 X
xdd
dd表示2个十六进制数字。 如: x30 0
7.3 注释
  • C语言风格的注释 /xxxxxx/
    缺陷:不能嵌套注释
  • C++风格的注释 //xxxxxxxx
    可以注释一行也可以注释多行

八、选择语句
#include 
int main()
{
   int coding = 0;
   printf("你会去敲代码吗?(选择1 or 0):>");
   scanf("%d", &coding);
   if(coding == 1)
  {
      prinf("坚持,你会有好offern");
  }
   else
  {
      printf("放弃,回家卖红薯n");
  }
   return 0;
}
九、循环语句
//while循环的实例
#include 
int main()
{
   printf("下载vs2019n");
   int line = 0;
   while(line<=20000)
  {
       line++;
       printf("我要继续努力敲代码n");
  }
   if(line>20000)
       printf("好offern");
   return 0;
}
十、函数
#include 
int main()
{
   int num1 = 0;
  int num2 = 0;
   int sum = 0;
   printf("输入两个操作数:>");
   scanf("%d %d", &num1, &num2);
   sum = num1 + num2;
   printf("sum = %dn", sum);
   return 0;
}
上述代码,写成函数如下:
#include 
int Add(int x, int y)
{
  int z = x+y;
  return z;
}
int main()
{
   int num1 = 0;
  int num2 = 0;
   int sum = 0;
   printf("输入两个操作数:>");
   scanf("%d %d", &num1, &num2);
   sum = Add(num1, num2);
   printf("sum = %dn", sum);
   return 0;
}
十一、数组 11.1数组的定义:一组相同类型元素的集合
int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素
//如果不知道数组提前占多少内存
//就直接arr[]里面什么都不写即可
11.2 数组的下标

11.3数组的使用

数组的初始化如果未完全 则会自动填充

#include 
int main()
{
int i = 0;
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
for(i=0; i<10; i++)
{
      printf("%d ", arr[i]);
}
printf("n");
   return 0;
}

十二、如何在vs2019窗口调试

按下ctrl+f10之后(笔记本电脑按ctrl+fn+f10)

十三、%d %s的意思

十四、三目操作符
int c =a>b?a:b;
//如果a>b的结果为真就输出a
//如果a>b的结果为假就输出b
十五、关键字:typedef

顾名思义:就是对类型进行重命名

//将unsigned int 重命名为uint_32, 所以uint_32也是一个类型名
typedef unsigned int uint_32;
int main()
{
   //观察num1和num2,这两个变量的类型是一样的
   unsigned int num1 = 0;
   uint_32 num2 = 0;
   return 0;
}
十六、关键字:static

#关键字void表示这个函数没有return返回值

  • static修饰局部变量:放到静态区域
  • static修饰全局变量:使得全局变量由外部链接属性变为内部链接属性,其它源文件.c不能再使用它
  • static修饰别的文件的函数:还是外部链接属性变为内部链接属性,其他源文件.c不能再使用它extern int Add(int x,int y);

①修饰局部变量:

  • 输出的结果是10个2 说明每次进入到test这个函数 都是a=1。
  • 这也说明了a这个变量的作用域是在test这个函数内部 只要使用完test这个函数,变量a立刻被销毁,即生命周期结束。
  • 而经过了static修饰的a,则可在整个程序存在 这时候a就不会被销毁了 且每次进入test函数的第一行都失效不会再变为1。

#而加入了static之后:
解释原因:计算机的内存分为了栈区、堆区和静态区;

②修饰全局变量

③修饰函数

十七、#define定义常量和宏

再次强调:知道有这么个东西就行了现在!

//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
#include 
int main()
{
   int sum = ADD(2, 3);
   printf("sum = %dn", sum);
   
   sum = 10*ADD(2, 3);
   printf("sum = %dn", sum);
   
   return 0;
}
十八、指针! 18.1 内存
  • 内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。
  • 所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节。
  • 为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
  • 手机很喜欢说自己内存4G 6G 8G
    那么可以换算以下32位电脑,意味着它拥有三十二根地址线,在通电的时候可以产生脉冲信号0或者是1,那么就会产生总共2的32次方个地址序列,已知每个地址序列的大小是1kb,那么总共就有4,264,967,296byte,经过换算,➗1024=4,194,304mb,➗1024=4096Mb,➗1024=4GB,这就是内存大小!!!
  • 在内存地址中,用十六进制进行地址序列命名
18.2如何在vs2019上查看内存

在ctrl+f10之后才能看到内存和监视!!!

int main()
{
	int a = 10;//向内存申请了四个字节的内存空间 因为整型的大小是四个字节
	//a占了四个字节所以有四个地址 这时候a的地址取出来的应该是第一个也就是最小的地址
	&a;//取地址操作符 这样可以取出a的地址 用调试查看地址
	printf("%pn", &a);//%p是以地址的形式来打印
    int* p =&a;//用int*类型存储a的地址到变量p中,此时p被称为指针变量
    //存放地址的变量被称为指针变量 指针=编号=地址
	return 0;
}

18.3小科普:

0a 00 00 00
08 09 0a 0b
所以下面一行是0c

10进制由0、1、2、3、4、5、6、7、8、9 十个数字组成
8进制则是0-7
2进制是0-1
16进制是0-9、A-F
  • 10转换成16进制正是 0x 00 00 00 00 0a
  • 这个0x是十六进制的开头 八进制用0开头 二进制则是b
  • 所以可以看见内存中的数据是倒着的存放形式(至于为什么是倒着存后面会讲)
18.4 指针变量的大小

32bit位电脑:4byte;
64bit位电脑:8byte;

十九、结构体
  • 结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。
  • 比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。
  • 这里只能使用结构体来描述了。
- struct Stu
{
   char name[20];//名字
   int age;      //年龄
   char sex[5];  //性别
   char id[15]; //学号
};
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};
//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %sn", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %sn", ps->name, ps->age, ps->sex, ps-
>id);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/832426.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号