初识C语言:从0开始,由菜鸟变大牛(2)

前面我们讲了什么是C语言、第一个C语言程序、数据类型,接下来我们再来学习一点新的东西,同样,知识也是点到为止,对C语言有一个初步的了解。

    • 变量、常量

在我们日常生活中,通常有一些值是不变的(类如:圆周率、性别,身份证号码、血型...等等)

还有一些值是可变的(比如:年龄、体重、薪资)

在C语言中用常量来表示这些不变的值,用变量来表示这些可以改变的值。

1.1定义变量的方法:

数据类型 + 变量名 = 对其进行赋值;

int a = 0;  //这里对其赋值0,表示对a进行初始化
//一个人的年龄
int age = 18;
//一个人的身高
float high = 1.75f;   //这里要注意:在VS编译器里面小数类型默认是double类型
                       //在其后面加上f将其改变为float类型
//表示一个字母
char ch = ‘A’;

1.2变量的命名:

  • 只能由字母(包括大写和小写)、数字和下划线(_) 组成。

  • 不能以数字开头。

  • 长度不能超过63个字符。

  • 变量名中区分大小写的。

  • 变量名不能使用关键字。(这里的关键字在后文中会有介绍)

注:变量的命名要有实际意义

1.3变量的分类:

  • 局部变量

  • 全局变量

局部变量指的是在一个函数内部定义的变量;

全局变量也称做外部变量,指的是函数外部定义的变量,可以被本程序所有对象或者函数引用。

变量要定义在当前代码块的最前面。

#include<stdio.h>
int c = 30;         //全局变量
int main()
{
    int a = 10;     //局部变量
    int b = 20;     //局部变量
    printf("a=%d\n", a );
    printf("b=%d\n", b );

    printf("c=%d\n", c );
    return 0;
}

1.3.1:特别注意:

当局部变量和全局变量的名称冲突时,会发生什么呢?

我们用代码来验证一下

#include<stdio.h>
int a = 20;        //全局变量
int main()
{
    int a = 10;   //局部变量
    printf("a=%d", a);
    return 0;
}

当全局变量和局部变量的名称发生冲突时,优先编译局部变量(当我们给变量命名的时候,尽量不要发生命名冲突的情况)

这里可以看到,当局部变量和全局变量命名发生冲突时,优先编译的是局部变量。

1.3.2:变量的使用:

当我们创建一系列的变量时,我们要使用所创建的变量,该怎么使用呢?

在使用之前我们来了解一些新的知识:

(1).输入输出语句:

scanf 函数可用于输入,printf 函数可用于输出

(2).基本语法

scanf ("%d %d", & x, & y);

我们这里假设我们输入的数为整形,所以打印整形需要的是%d,假设我们所要输入的是两个数,后面就跟&x,&y,这里x和y表示所要输入的值,要注意 & 表示取地址的意思,当我们输入一个数,我们要把它存起来,就需要取它的地址进行储存。

我们用代码来演示一下

求两个数的和:

#include<stdio.h>
int main()
{
    int a = 0;
    int b = 0;
    int sum = 0;
    printf("请输入两个整数\n");
    //输入
    scanf("%d %d", &a, &b);    //这里注意:%d %d,表示在后面输入两个数的时候,中间要用空格隔开
    //计算                      //如果这里是 %d,%d,则输入两个数的时候中间要加上,
    sum = a + b;               
    //输出
    printf("sum=%d", sum);
    return 0;
}

这个代码很好的给我们演示了两个数的相加,以及scanf函数的使用

注:在VS这种编译器里面会对scanf函数进行警告,VS会感觉scanf函数不安全,它会建议我们使用scanf_s来替换scanf,但是,scanf_s只是VS里面所提供的,当我们将代码转移到其他编译器里面的时候,将不能编译,所以,scanf_s只能在VS里面使用,无法体现代码的跨平台性,那我们要解决这个问题,只需在我们的代码的第一行,#define _CRT_SECURE_NO_WARNINGS 1 ,就可以解决scanf函数警告。

1.4变量的作用域和生命周期:

作用域:

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

1. 局部变量的作用域是变量所在的局部范围,也就是它只能在它所在的这个局部范围内起作用。

2. 全局变量的作用域是整个工程,只要是在这个工程里面,它都可以起作业。

生命周期:

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

1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。

2. 全局变量的生命周期是:整个程序的生命周期。

1.5常量:

C语言中的常量和变量的定义的形式有所差异。

C语言中的常量分为以下以下几种:

  • 字面常量

  • const 修饰的常变量

  • #define 定义的标识符常量

  • 枚举常量

1.5.1字面常量:

int main()
{
    3.14;//浮点型常量
    55;//整型常量
    'a';//字符常量
    return 0;
}

简而言之就是直接在代码块里面写出的常量。

1.5.2const修饰的常变量:

int main()
{
    const int num = 10;

    printf("%d\n", num);//10

    return 0;
}

const修饰的常变量之后,被const修饰的这个变量则在后面不能被修改,但是它在本质上还是一个变量,只是不能被改变了,并不能说是被const修饰之后就变为常量了,所以才叫做常变量。

1.5.3#define定义的标识符常量:

#define MAX 100      
#include<stdio.h>
int main()
{
    //MAX = 200;//err
    printf("%d\n", MAX);  //100

    return 0;
}

#define定义的标识符常量也是不可以被修改的,在这个代码中,如果要修改MAX的值,则会出现错误。

1.5.4枚举常量:

可以一 一列举,但不可以改变的常量(比如,三原色,性别...等等)

枚举关键字-enum

列出三原色:

enum Color
{
    RED,
    GREEN,
    BULE

};
int main()
{
    enum Color color = RED;
    return 0;
}

我们来将枚举常量打印出来:

#include<stdio.h>
enum Color
{
    RED,
    GREEN,
    BLUE

};
int main()
{
    enum Color color = RED;
    printf("%d\n", RED);
    printf("%d\n", GREEN);
    printf("%d\n", BLUE);

    return 0;
}

我们可以看到,枚举常量的默认值是从0开始的,一次向下递增1的。

    • 字符串、转义字符、注释

2.1字符串:

"hello world.\n"

在C语言中:像这种由双引号引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。

'A'

在C语言中:由一个单引号引起来的叫一个字符。

//%s - 打印字符串
//%c - 打印字符

用代码来表示字符串和字符:

#include<stdio.h>
int main()
{
    char ch = 'a';              //表示字符
    char arr[] = "abcdef";  //表示字符串
    return 0;
}

所以字符串有两种表示方法:

char arr1[]= "abcdef";
char arr2[]= {'a','b','c','d','e','f','\0'};

第一种表示方法:在这个字符串的最后面默认有一个\0

第二种表示方法:在这个字符串的最后面要加上\0

我们再来了解一个新的概念:\0

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

当我们知道了\0,我们来打印字符串看看效果:

#include<stdio.h>
int main()
{
    char arr1[] = "abc";                     //这种默认有\0,所以打印到c就停止打印
    char arr2[] = {'a', 'b', 'c'};           //这种后面如果不加\0,则会有什么效果呢?
    
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;
}

我们可以看到,我们的字符串arr2中只有abc,但是为什么后面还有这么多奇怪的数字呢?

那是因为,我们没有加\0,所以,当打印字符串的时候,在打印完c之后没有遇到\0,所以就会一直打印一串随机的值,直到遇到\0才会停止打印,所以,在打印完c之后,再打印的值我们无法知道,是一串随机的值,arr1中的字符串后面默认就有一个\0,所以在打印完c之后,就会停止打印。

#include<stdio.h>
int main()
{
    char arr1[] = "abc";
    char arr2[] = {'a', 'b', 'c','\0'};
    
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    return 0;
}

当在arr2中加上\0之后,我们打印的值就是我们所要的值。

当我们打印字符串的时候,打印到\0就停止

当我们求字符串长度的时候,也是要找到\0,统计的是\0之前出现的字符串个数

用代码求字符串的长度:

当我们求字符串长度的时候要用到库函数strlen

在使用strlen函数时,要引用头文件#include<string.h>

#include<stdio.h>
#include<string.h>
int main()
{
    int len1 = 0;
    int len2 = 0;
    char arr1[] = "abc";
    char arr2[] = { 'a', 'b', 'c','\0' };

    len1 = strlen(arr1);
    len2 = strlen(arr2);
     
    printf("%d\n", len1);
    printf("%d\n", len2);
    return 0;
}

可以看到arr1和arr2的长度都是3,这也就说明了在计算字符串长度时,也是遇到\0就停止计算,也就是说strlen函数在计算字符串长度时,只统计\0之前的字符串个数。如果不加\0,那得到的结果就是一个随机值。

2.2转义字符:

假如我们要在屏幕上面打印一个目录:c:\code\test.c

那我们该如何写代码呢?

#include<stdio.h>
int main()
{
    printf("c:\code\test.c\n");
    return 0;
}

当我们运行起来的结果却大不相同

那这是为什么呢?

是因为\后面跟的某一些字母、数字、符号合起来表示的是一种转义字符的意思,转义字符顾名思义就是转变意思,那我们来看一下常见的转义字符:

转义字符

释义

\?

在书写连续多个问号时使用,防止他们被解析成三字母词

\'

用于表示字符常量'

\''

用于表示一个字符串内部的双引号

\\

用于表示一个反斜杠,防止它被解释为一个转义序列符

\a

警告字符,蜂鸣

\b

退格符

\f

进纸符

\n

换行

\r

回车

\t

水平制表符

\v

垂直制表符

\ddd

ddd表示1~3个八进制的数字

\xdd

dd表示2个十六进制数字

我们了解了转义字符,我们再来打印一个目录:c:\code\test.c

#include<stdio.h>
int main()
{
    printf("c:\\code\\test.c\n");     //我们这里使用\\将\c,\t原本的意思转变
    return 0;
}

当我们使用\\将\c,\t的意思转义,我们就可以打印目录。

2.2.1\ddd的意思:

\ddd是一个转义字符,表示的意思:ddd转化为10进制时所表示的ASCII码值,其中ddd表示1~3个八进制的数字。

我们用一段代码来表示一下:

\137----137是一个8进制的数字,转化为10进制是95,95所表示的ASCII码值是 _

#include<stdio.h>
int main()
{
    char a = 0;
    a = '\137';             //\137是一个字符所以放在''里面
    printf("%c\n", a);     //打印字符用%c
    return 0;
}

这里要注意:\ddd,这里面的一定是8进制的数字,8进制的数字要小于8,比如:\138,这就是两个字符:\13 和8,所以打印的时候打印的是13转化为10进制所对应的ASCII码值和8.

2.2.2\xdd的意思:

\xdd是一个转义字符,表示的意思是dd转化为10进制所表示的ASCII码值,其中dd表示2个十六进制数字。

我们来打印一下\x78

这里的78是一个16进制的数,转化为10进制是120,120所表示的ASCII码值是x

#include<stdio.h>
int main()
{
    char a = 0;
    a = '\x78';
    printf("%c\n", a);
    return 0;
}

注:ASCII码值所表示的数的范围是有限的0~127,如果转化过后的值超过这个范围将不会打印出想要的结果。

说到这里,我们再来看一串代码:

#include<string.h>          //使用strlen函数要包含头文件
#include<stdio.h>
int main()
{
    char arr[] = "c:\test\628\test.c";
    int len = strlen(arr);      //计算arr字符串的长度

    printf("%d\n", len);

    return 0;
}

我们来计算一下这一串字符的长度,各位读者可以想一想这个结果是多少

这个字符串的结果是14,我们来一起看一下:

画的图有点挫,我们来将就的看一下,\t是一个转义字符算作一个字符,\62是类似于\ddd类型的转义字符也算作一个字符(这里的8不属于8进制的数字,所以是一个单独的字符

    • 注释

1. 代码中有不需要的代码可以直接删除,也可以注释掉

2. 代码中有些代码比较难懂,可以加一下注释文字

#include <stdio.h>
int Add(int x, int y)
{
    return x + y;
}
/*C语言风格注释
int Sub(int x, int y)
{
return x-y;
}
*/
int main()
{
    //C++注释风格
    //int a = 10;
    //调用Add函数,完成加法
    printf("%d\n", Add(1, 2));
    return 0;
}

注释有两种风格:

C语言风格的注释 /*xxxxxx*/

缺陷:不能嵌套注释

C++风格的注释 //xxxxxxxx

可以注释一行也可以注释多行(建议使用C++注释风格)

伙计们,本篇的分享就到此结束,感谢各位阅览,如果有什么不足或者是看不懂的地方可以留在评论区,感谢大家!

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论
### 回答1: Hello World网页制作是HTML编程的入门级别。以下是制作Hello World网页的步骤: 1. 打开文本编辑器,如记事本或Sublime Text等。 2. 在文本编辑器中输入以下代码: <!DOCTYPE html> <html> <head> <title>Hello World</title> </head> <body> <h1>Hello World!</h1> </body> </html> 3. 保存文件,文件名为“helloworld.html”,确保文件类型为“所有文件”。 4. 在浏览器中打开“helloworld.html”文件,即可看到“Hello World!”的标题。 这个简单的网页由HTML标记组成,其中包括文档类型声明、HTML标签、标题标签和正文标签。HTML标记告诉浏览器如何显示网 ### 回答2: HTML是超文本标记语言的英文缩写,是用来制作网页的一门标记语言。在网页制作中,HTML主要用来编写网页的内容和结构,决定网页中各个元素的排列和位置。 制作HTML网页的第一步,是编写一个简单的“hello world”网页。这个网页的基本结构如下所示: <!DOCTYPE html> <html> <head> <title>我的第一个网页</title> </head> <body> <h1>Hello World!</h1> </body> </html> 该网页有三个部分组成: 1.头部(head):用于描述文档的基本属性,包括文档类型声明、字符编码、文档title等。文档title会在浏览器的标题栏中显示。 2.主体(body):用于展示文档内容。在body中,可以添加文本、图片、链接、表格等各种元素。 3.文本(text):在该网页中,<h1>标签表示网页的标题,这里的标题是“Hello World!”。 当我们在编辑器中输入以上代码,保存为一个html文件,使用浏览器打开它,就可以看到“Hello World!”这个简单的网页了。 尽管这只是一个简单的网页,但它展示了HTML的基本属性,如何在HTML中描述文档的结构和展示内容,为之后学习其他更加复杂的HTML网页制作奠定了基础。 ### 回答3: HTML 是一种标记语言,是网页制作的基础。在制作网页时,首先需要创建一个 HTML 文件,并在文件中编写 HTML 代码。最简单的 HTML 代码就是 Hello World 网页。下面我来介绍一下如何制作这个网页。 首先,我们需要创建一个 HTML 文件。可以使用文本编辑器(如 Notepad++、Sublime Text 等)来创建 HTML 文件。以 Notepad++ 为例,创建一个新文本文件,将文件后缀名改为 .html,这样我们就创建了一个 HTML 文件。接下来,我们需要在 HTML 文件中编写代码。 HTML 代码由标签和内容组成。标签用来标记 HTML 文档中的不同部分,内容则是标签所包含的文本、图片、链接等等。以 Hello World 网页为例,我们可以编写以下代码: ``` <!DOCTYPE html> <!-- 文档类型声明 --> <html> <!-- html 根标签 --> <head> <!-- head 标签 --> <title>Hello World</title> <!-- title 标签,设置网页标题 --> </head> <body> <!-- body 标签,设置网页的 body 部分 --> <h1>Hello World</h1> <!-- h1 标题标签,设置网页主标题 --> <p>This is my first HTML web page.</p> <!-- p 标签,设置网页主要内容 --> </body> </html> ``` 上述代码中,第一行 ``<!DOCTYPE html>`` 是文档类型声明,告诉浏览器这是一个 HTML5 文档。接下来的 ``<html>`` 标签是 HTML 文档的根标签,所有其他标签都嵌套在它内部。``<head>`` 标签用于设置网页的头部内容,例如网页标题、样式表等等。标签内部的 ``<title>`` 标签用于设置网页标题。``<body>`` 标签用于设置网页的 body 部分,即网页中显示的内容。``<h1>`` 标签用于设置网页主标题,“Hello World” 就是我们的主标题。``<p>`` 标签是段落标签,用于设置网页主要内容。 将上述代码保存为 .html 后,我们就可以用浏览器打开它,看到我们刚刚编写的 Hello World 网页了。这是一个非常简单的网页,但它包含了 HTML 的基础标签和使用方法,对于初学者来说是非常有帮助的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stackY、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值