C语言学习--初始C语言01

Posted 庸人冲

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言学习--初始C语言01相关的知识,希望对你有一定的参考价值。

一个编程菜鸟的学习之旅


刚刚入门学习编程,目前在学C语言,希望能通过写BLOG的方式,整理回顾自己学习的知识,同时也把自己在学习中遇到的一些坑记录下来,希望能帮助到同在自学中遇到同样问题的小伙伴,如果文章中有存在问题的地方,还恳请各位大佬批评指正。

一、自我介绍

大龄追梦人,与社会脱轨了5年时间(不是被关进去),妄想通过自学能改变现状。

二、学习目标

1. 总体目标

通过学习能成功转行就业。

2. 学习目标

现阶段在学习C语言,通过学习,要求自己能对C语言有一个较为深入的了解,为下一步的学习打下坚实基础。

三、学习规划

目前属于脱产学习,时间充裕,但是也不能浪费时间,毕竟年纪不小了。因此我把自己的学习划分为下面几个阶段:

  1. C语言
  2. 离散数学
  3. JAVASE
  4. Linux基本操作
  5. 数据结构与算法
  6. MySQL数据库
    现阶段给自己定下的学习任务大概这么多,基本都是基础的知识。随着学习的升入,会进行调整。当然向离散数学这样的通用基础知识,之前欠下的东西太多,只能一点一点从零开始补起来。

四、最想进的公司

大厂就不想了,想也没戏,起点太低。目标是能在自己的条件范围内,寻找一家相对不错的公司成功转行就可以,也就是能找到工作就算追梦成功了,哈哈。

笔记部分

好了废话就不多说了,纪录下这两天的学习内容,并整理下笔记吧,以下内容大部分会用自己的语言去组织描述,可能会显得臃肿甚至是错误,如果出现错误的地方,还请各位大佬批评。

DAY1~DAY4初识C语言学习导图

在这里插入图片描述

一、第一个C程序

估计自学C的小伙伴,第一个C程序都是Hello World

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    printf("Hello Wolrd!");
	return 0;
}
接下来每一行解释它们的作用:
#define _CRT_SECURE_NO_WARNINGS 1

这行代码是解决在调用某些函数时VS会报错的情况,VS认为例如scanf()这样的函数是不安全的,而它提供了一种更安全的函数scanf_s(),如果要忽略这个报错就需要在首行 声明上面这段代码。(这段代码的自动生成方式在文章末尾给出)

#include <stdio.h>

C语言在调用库函数时需要.h结尾引用头文件,个人理解是头文件里面封装了C语言提供给开发人员的各种常用函数。
stdio 就是 standard input & output 标准输入输出,例如printf();打印函数 与 scanf(); 输入函数都需要用到这个头文件。

int main()
{
    printf("Hello Wolrd!");
	return 0;
}
  1. int 表示声明的这个函数的返回值是整形 intager。
  2. main() 函数表示一个程序的入口,main函数在整个工程中必须出现也只能出现一次。而**()**里表示main函数的参数,可以为空,也可以写成 main(void) 含义相同。
  3. printf(); 打印函数()里是需要打印的内容;
  4. return 0; 程序结束的返回值,与前面的int相呼应,
    注意:如果函数名前面是char、double等类型,return的返回值也必须是对应类型的值。

二、数据类型

C语言的基本数据类型包含字符型、整形、浮点型。

1. 字符型

char letter = 'a';

关键字为char 所占内存空间为1字节 == 8位,也就是只能存储一个字符,用单引号 ’ ’ 引起。

取值范围

有符号位:-2 ^7(-128) ~ 2 ^7 - 1(127)
无符号位:0 ~ 2 ^8 -1 (255)

符号位

数据类型的最高位用来表示数据的符号位
-最高位为1,表明这个数为负数
-最高位为0,表明这个数为整数
这里不深入展开。

2. 整形

整数又分为short、int、long、long long,每种类型向内存申请的空间大小不同。

(1) short

short age = 18;

关键字shortshort int ,占用内容大小2字节,数字类型不需要用引号包含。

取值范围

有符号位:-2 ^15(-32 768) ~ 2 ^15 - 1(32 767)
无符号位:0 ~ 2 ^16 -1(65 535)

(2)int

int num = 10;

关键字为int ,占用内存大小4字节。

取值范围

有符号位:-2 ^31(-2 147 483 648) ~ 2 ^31 - 1(2 147 483 647)
无符号位:0 ~ 2 ^32 -1(4 294 967 295)

(3)long

long num = 99999

关键字为longlong int, long的取值范围C语言规定只要大于int即可,占用内存大小是4/8字节,在VS上typeof() 打印显示是4个字节

取值范围(4字节)

有符号位:-2 ^31(-2 147 483 648) ~ 2 ^31 - 1(2 147 483 647)
无符号位:0 ~ 2 ^32 -1(4 294 967 295)

取值范围(8字节)

有符号位:-2 ^63(-9.223372036548e+18) ~ 2 ^63 - 1(9.2233720368548e+18)
无符号位:0 ~ 2 ^64 -1(1.844674407371e+19)

(4)long long

long long num = 99999999999

关键字为 long longlong long int,占用内存大小8个字节。

取值范围

有符号位:-2 ^63(-9.223372036548e+18) ~ 2 ^63 - 1(9.2233720368548e+18)
无符号位:0 ~ 2 ^64 -1(1.844674407371e+19)

3. 浮点型

浮点型也就是带小数点的数字类型,小数点可以作用浮动(科学计数法),因此叫浮点型吧(个人臆想)。
分为float单精度浮点型和double双精度浮点型
浮点型只存在有符号位数

(1)float

关键字为float,占用内存空间大小为4字节。

float fl = 1.234;
取值范围

-/+3.4e38(精确到6位小数)

(2)double

关键字为double,占用内存空间大小为8字节。

double db = 1.234567;
取值范围

-/+1.7e308(精确到15位小数)

4. 打印不同数据类型的格式符

格式符作用
%d打印十进制整形
%c打印字符
%s打印字符串
%lf打印双精度浮点数
%p以地址的形式打印
%x打印16进制数字

三、变量

变量: 可变的量,用来向内存申请一块空间存放值,通过变量名来读取或写入对应内存块中的值。

1. 变量的定义方法

#include <stdio.h>
int main() 
{
    // 类型 变量名 = value;
    short age1 = 20; 
    // 向内存申请了2byte的空间命名为age1,用来存放整形
	float weight = 95.6f;  // f表示单精度浮点
	// 向内存申请了4byte的空间命名为weight,用来存放浮点数
}

2. 局部变量和全局变量

全局变量

定义在代码块{}之外的变量,也就是不被{}包含的变量都是全局变量。全局变量的作用域是整个工程。

局部变量

定义在代码块{}之内的变量,局部变量的作用域就是它所在的代码块,也包含嵌套的代码块{}

#include <stdio.h>

int global = 2021; // 全局变量 -- 不被{}所包含
int main() 
{
	int local = 2019; // 局部变量 -- 定义在代码块{}之内的变量
	int global = 2020; // 局部变量 
	// 局部变量和全局变量名字相同时,可以同时存在,局部变量优先(建议不要相同)
	printf("global = %d\\n", global); // 2020(就近原则)
	return 0;
}

总结

今天大概就写到这里了,第一次写blog确实非常困难,在梳理知识点的时候会发现自己存在很多不懂的地方,写的也是磕磕盼盼。不过万事开头难,好的习惯需要长期的积累与养成,加油,共勉吧!

记录在学习过程中遇到的一些问题

每次总结一下自己遇到的问题,防止同样的错误再次发生。

1. 下载VS2019,安装时却是VS2017的一种解决方法。

在第一次安装VS时,就遇到了一个小问题,自己在官网下载的明明是vs2019,安装时显示的却是vs2017,在网上查阅后,有一种简单的解决办法,碰到类似问题的小伙伴可以参考一下。

  1. 在官网下载Professioanl 版本
    在这里插入图片描述
  2. 点击安装包等到VS installer安装完毕
    在这里插入图片描述
  3. 出现下面的对话框,在可用选项里,红框标注位置会看到Visual Studio Community 点击安装,(因为我已经安装过了,所以没有这个选项)

在这里插入图片描述

  1. 后面的安装步骤就和正常一样了,这里就不在赘述了。

2. #define _CRT_SECURE_NO_WARNINGS 1 自动生成方式

  1. 找到VS安装路径下的newc++file.cpp文件
    在这里插入图片描述

  2. 打开文件将#define _CRT_SECURE_NO_WARNINGS 1 粘贴进文本内保存即可。
    在这里插入图片描述

  3. 保存可能会提示没有权限,解决方法:

3.1 可以通过修改上级文件夹的用户权限来进行修改
在这里插入图片描述
右击属性–>安全–>编辑–>选择登录用户–>添加修改权限
在这里插入图片描述
3.2 或者是使用Notepad++这样的文本笔记器进行更改。
3.3 或者打开VS时以管理身份运行,找到对应文件修改即可。

3. scanf(); 打印函数里不要加转义字符\\n。

特别是输入值作为判断条件时,加了\\n 后,判断条件就不成立了。被这里坑了两次,自己明明输入的值没有问题,可就是进不去if语句,因此在这里提醒下自己,事不过三。

4. 引头文件需要加.h后缀

这个问题特别无语,报错后看了好久代码都没有发现哪里出错了,希望大家不要向我这样粗心。

以上是关于C语言学习--初始C语言01的主要内容,如果未能解决你的问题,请参考以下文章

C语言学习--初始C语言01

C语言基础学习笔记七初始结构体(详细讲解+代码举例+图解)

C语言基础学习笔记六初始指针(重点必看)(详细讲解+代码举例+练习巩固)

c语言对二维数组的某一行赋值 如u8 a[20][20]; 仅对a[10]这一行赋值

C语言第三天笔记2016年01月14日(周四)P.M

C语言学习--初始C语言03