广告位联系
返回顶部
分享到

C语言基础知识分享续篇

C语言 来源:互联网 作者:佚名 发布时间:2023-01-26 10:35:42 人浏览
摘要

写在前面 好了,现在我们开始C语言的第二个部分.今天我们需要看下面几个知识点,都是非常简单的,我们主要认识一下. 数组 我们知道一个一个属性可以用一个类型去表示,那么我想问的是

写在前面

好了,现在我们开始C语言的第二个部分.今天我们需要看下面几个知识点,都是非常简单的,我们主要认识一下.

数组

我们知道一个一个属性可以用一个类型去表示,那么我想问的是如果是一个属性的多个呢?也就是多个一样的东西,此时我们就要使用数组来进行表示,所谓的数组就是存储数据的容器,保证多个数据的数据类型要一致,C语言中给了数组的定义:一组相同类型元素的集合.

数组使用

我们想要存储1~10这几个数据我们应该如何存储?很简单.

1

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

注意了,如果我们没有在[]中具体元素的个数,那么我们实际存储元素的个数按照后面初始化的个数来进行计算,如果给了实际元素的个数,那么我们后面最多存储元素就是规定的元素个数.我们如果访问数组的元素,那么我们就要依赖数组的下标,记住数组的下标是从0开始的,这一点非常重要.

1

2

3

4

5

6

7

8

9

10

11

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;

}

初识C语言(下)_操作符

函数

所谓的函数我们可以称之为是代码的功能的集合,我们把程序不同的功能写成一个个函数,这样我们后面是可以再其他地方重复调用的.其中main函数也是一个函数.函数的基本结构是

1

2

3

4

放回置 函数名(参数列表)

{

函数体

}

我们来实现一个打印1-10的函数.

1

2

3

4

5

6

7

void Print()

{

for (int i = 0; i < 10; i++)

{

printf("%d ",i+1); // ??)--]-三字母词

}

}

我们调用函数只需要用函数名和相关的参数就可以了.

1

2

3

4

5

int main()

{

Print();

return 0;

}

初识C语言(下)_数组_02

字符串

在C语言中用一对""括起来的字符我们称之为字符串,就像"hello world".注意我们C语言是没有字符串类型的,大家不要搞错了就行.

在C语言中字符串的末尾其实隐藏着一个'\0';y也就是只要你使用双引号输入一个字符串,它的末尾就是自动携带一个'\0'来作为字符串的结束标志,实际在内存中,上面的字符串是这样的“hello world\0"末尾带了一个'\0'来作为结束标志.我们验证一下.

1

2

3

4

5

6

7

#include <stdio.h>

int main()

{

char * str = "hello world";

 

return 0;

}

初识C语言(下)_数组_03

上面我们验证的还是不太清楚,这里我们再次看一个现象.

1

2

3

4

5

6

7

8

9

10

11

#include <stdio.h>

int main()

{

char arr1[] = { 'a', 'b', 'c', 'd' };

char arr2[] = { 'a', 'b', 'c', 'd','\0' };

char* arr3 = "abcd";

printf("arr1 %s\n", arr1);

printf("arr2 %s\n", arr2);

printf("arr3 %s\n", arr3);

return 0;

}

初识C语言(下)_操作符_04

也就是所谓的字符串我们可以这样认为,我们可以认为他们是字符数组,但是字符数组最后我们一定要带上一个'\0',注意我们是这么理解,实质肯定有所不同,我们先不谈,这涉及到其他的内容.

strlen && sizeof

我们谈到字符串和字符数组我们就不得不说一下strlen和sizeof得区别了,记住了它最大得一个区别,sizeof是关键字,strlen是函数,这是本质得不同.在功能呢上,sizeof计算是我们数组开辟得空间,它的单位是字节,strlen是计算有效字符的个数,所谓的有效字符是指'\0'之前的都是有效字符.

sizeof

我们先来测试一下sizeof关键字.

1

2

3

4

5

6

7

8

9

10

11

int main()

{

char arr1[] = { 'a', 'b', 'c', 'd' };

char arr2[] = { 'a', 'b', 'c', 'd', '\0' };

char arr3[10] = { 'a', 'b', 'c', 'd', '\0' };

printf("arr1 %d\n", sizeof(arr1));

printf("arr2 %d\n", sizeof(arr2));

printf("arr3 %d\n", sizeof(arr3));

 

return 0;

}

初识C语言(下)_字符串_05

这个我们已经知道了,那么我们这里在和大家说一下sizeof的的用法,我们sizeof既可以计算类型的大小,也可以计算变量占据空间的大小.

1

2

3

4

5

6

7

int main()

{

int a = 0;

printf("int %d\n", sizeof(int));

printf("a %d\n", sizeof(a));

return 0;

}

初识C语言(下)_字符串_06

但是我们计算类型和计算变量是有一点区别的,计算变量我们可以不带括号.

1

2

3

4

5

6

7

8

int main()

{

int a = 0;

 

printf("a %d\n", sizeof a);

 

return 0;

}

初识C语言(下)_字符串_07

但是我们参数是类型的时候我们必须带上括号.

1

2

3

4

5

6

7

8

int main()

{

int a = 0;

 

printf("int %d\n", sizeof int);

 

return 0;

}

初识C语言(下)_字符串_08

strlen

下面我们开始用一下strlen函数,这个是在标准库string.h中的,我们使用前需要引入头文件.strlen函数就是为了寻找字符'\0',知道知道'\0',否则我们会一直计数.

1

2

3

4

5

6

7

8

9

10

11

int main()

{

char arr1[] = { 'a', 'b', 'c', 'd' };

char arr2[] = { 'a', 'b', 'c', 'd', '\0' };

char* arr3 = "abcd";

printf("arr1 %d\n", strlen(arr1));

printf("arr2 %d\n", strlen(arr2));

printf("arr3 %d\n", strlen(arr3));

 

return 0;

}

初识C语言(下)_操作符_09

转义字符

假如我们要在屏幕上打印一个目录:c:\code\test.c.我们该如何写代码,是不是按部就班的直接复制粘贴.看一下现象.

1

2

3

4

5

6

7

int main()

{

 

printf("%s\n", "c:\code\test.c");

 

return 0;

}

初识C语言(下)_数组_10

此时我们就会发现和我们想的有点不太一样.是我们想错了吗?不是的,是大家缺了一个知识点.在C语言中,为了我们数据的打印更加优美,此时添加了很多的转义字符.什么是转义字符,这个就是改变了原本意思的字符.今天我们用一下常见的转义字符.

转义字符

说明

\?

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

\\'

用于表示字符常量'

\“

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

\\

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

\a

警告字符,蜂鸣

\b

退格符

\f

进纸符

\n

换行

\r

回车

\t

水平制表符

\ddd

ddd表示1~3个八进制的数字。 如: \130 X

\xdd

dd表示2个十六进制数字。 如: \x30 0

下面我们认识一下三字母词

1

2

3

4

5

int main()

{

printf("(are you ok??)"); // ??)--]-三字母词

return 0;

}

初识C语言(下)_字符串_11

在一些老的编译器??)会被解析成],不过现在的编译器一般不这么干了,我们了解就可了.

我们说一下常见的一些转义字符,其余的就不谈了,有兴趣的自己可以查一查验证一下就可以了,很简单的.

\\\ 如果我们想要打印 字符'\\' ,在\的前面再加一个\就行了\ddd 这里面ddd表示的是3个8进制数,可以使用1-3个8进制数\xdd dd表示的两个十六进制数

下面我们来练习一个习题,我们求一下字符串的长度

1

2

3

4

5

6

7

8

#include<stdio.h>

#include <string.h>

int main()

{

char* str = "c:\test\328\test.c";

printf("%d\n", strlen(str));

return 0;

}

初识C语言(下)_字符串_12

这个字符串的长度是4,就是下面的“c : \t e s t \32 8 \t e s t . c”

操作符

这里只是认识,后面的再说吧.

算数操作符: + - * / %逻辑操作符: && ||移位操作符: >> <<赋值操作符: = += -= *= /= &= ^= |= >>= <<=位操作符: & ^ |条件操作符: exp1 ? exp2 : exp3逗号表达式: exp1, exp2, exp3, …expN

下面我们只说一下逗号表达式,所谓的逗号表达式就是我们根据从左到右的规则依次往后面计算,该赋值的赋值,该替换的替换.

1

2

3

4

5

6

7

int main()

{

int a = 0;

(a = 2 * 6, a * 3, a = a + 5);

printf("a = %d\n", a);

return 0;

}

初识C语言(下)_字符串_13

选择语句

所谓的选择语句就是我们在众多的选项中选择一个符合调价的,我们这里有下面两个类别.

if else

我们先用一下你就明白了,很简单.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

int main()

{

int coding = 0;

printf("你会去敲代码吗?(选择1 or 0):>");

scanf("%d", &coding);

if (coding == 1)

{

printf("坚持,你会有好offer\n");

}

else

{

printf("放弃,回家卖红薯\n");

}

return 0;

}

初识C语言(下)_操作符_14

此时我们就明白了他们的含义,如果我们符合条件,那么我们就执行该条件下的代码.那么我想问一下我们只有这两个个条件吗?不是的,我们也是可以田间else if 的.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

int main()

{

int coding = 0;

printf("你会去敲代码吗?(选择1 or 0 or -1):>");

scanf("%d", &coding);

if (coding == 1)

{

printf("坚持,你会有好offer\n");

}

else if (coding == -1)

{

printf("如果你是百万富翁当我没说话\n");

}

else

{

printf("放弃,回家卖红薯\n");

}

return 0;

}

初识C语言(下)_数组_15

同时我们else if和else都是可以省略的,只保留if,但是我们绝对不可以只让else或者是else的个数多余if.注意else是和它上面最近的if进行匹配的,这里我就不详细的说了,你一验证就明白了.

switch

除了if else选择之外我们还是有另外的一个语法的,这里也是很简单的.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

int main()

{

int a = 1;

switch (a)

{

 

case 1:

printf("%s\n","YES");

break;

case 0:

printf("%s\n", "NO");

break;

default:

printf("%s\n", "选择错误");

break;

}

return 0;

}

初识C语言(下)_字符串_16

switch()的括号的内部元素类型 字节<=4的整型(char int byte short)每一个case后面,除非是特殊业务要求,要带上break;

初识C语言(下)_数组_17

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

int main()

{

int a = 1;

switch (a)

{

 

case 1:

printf("%s\n", "YES");

case 0:

printf("%s\n", "NO");

default:

printf("%s\n", "选择错误");

}

return 0;

}

初识C语言(下)_字符串_18

循环语句

我们刚刚说了选择语句,但是这个语句只会执行一次。由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。那我们怎么做呢?这里就需要循环语句了,这里的循环语句三个。

  • for
  • while
  • do while

for

这个格式是for(表达式1; 表达式2; 表达式3),也是很好用的

表达式1 为初始化部分,用于初始化循环变量的。表达式2 为条件判断部分,用于判断循环时候终止。表达式3 为调整部分,用于循环条件的调整。

1

2

3

4

5

6

7

8

9

int main()

{

for (int i = 0; i < 10; i++)

{

 

printf("%d ", (i + 1));

}

return 0;

}

初识C语言(下)_数组_19

这里我们想和大家说一个结论,条件判断部分要比调整部分多上一次,有的选择题会进行考察.

while

我们也是使用它进行打印1-到10的数字,这个也是非常简单的.

1

2

3

4

5

6

7

8

9

10

11

int main()

{

int i = 0;

while (i<10)

{

 

printf("%d ", (i + 1));

i++;

}

return 0;

}

初识C语言(下)_操作符_20

do while

如果说while语句是先进行条件判断,那么dowhile就是先执行代码,后面再进行条件判断.

1

2

3

4

5

6

7

8

9

10

int main()

{

int i = 0;

do{

printf("i: %d\n",i);

 

} while (i > 0);

 

return 0;

}

初识C语言(下)_字符串_21

跳出语句

跳出语句算是对循环语句做一个补充,我们知道,任何一个人都有可能再满足一定情况下结束循环,有的人会等到条件完成后结束,有的人可能中途有添加了另外的条件,此时我们下面的两个关键子都是为了他们准备的.

contine

contine关键字是跳出本次循环,继续下一次的循环.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

int main()

{

int i = 0;

while (i < 10)

{

i++;

if (i == 5)

{

continue;

}

printf("i: %d\n", i);

 

}

 

return 0;

}

初识C语言(下)_字符串_22

break

break语句更加直接,它是直接结束循环.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

int main()

{

int i = 0;

while (i < 10)

{

i++;

if (i == 5)

{

break;

}

printf("i: %d\n", i);

 

}

 

return 0;

}

初识C语言(下)_数组_23

指针

下面我们谈C语言最重要的也是最让人难以理解的一个内容,这我们在后面会重点谈.大家记住,所谓的指针我们就认为它是一个地址,它是指向一个事物的标志,这就是指针的简单理解.根据计算机主线的根数不同,指针分为4字节和8字节,其中32为机器是4字节,64位是8字节.

1

2

3

4

5

6

7

8

int main()

{

 

int a = 10;

int * p = &a; // p 就是一个指针

printf("%d\n", sizeof(p));

return 0;

}

初识C语言(下)_数组_24

那么我想问的是我们拿到了a的地址,请问我们如何看待a的内容呢?这里可以使用解引用,解引用就是根据地址找到那一片的空间.

1

2

3

4

5

6

7

8

9

10

11

int main()

{

 

int a = 10;

int * p = &a;

printf("a = %d\n", *p);

*p = 20;

printf("a = %d\n", a);

 

return 0;

}

初识C语言(下)_操作符_25

这里我想和大家说的,任何指针类型的大小只要机器的位数确定,那么我们字节数也就确定了.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

struct Student

{

char name[100]; // 姓名

char sex[10];// 性别

int age; // 年龄

};

 

int main()

{

printf("char %d\n", sizeof(char*));

 

printf("int %d\n", sizeof(int*));

printf("double %d\n", sizeof(double*));

printf("struct Student %d\n", sizeof(struct Student*));

return 0;

}

初识C语言(下)_操作符_26

自定义类型

上面我们已经知道了自定义类型,也就是int之类的.那么我想问的是如果我们想要描述学生这个属性,我们应该怎么办?此时我们知道用自定义类型是可以描述的,但是我们有点麻烦,这里C语言提供了一个关键字,我们可以使用它来自己定义类型.

struct

这个一个结构体关键字,我们可以这么做.

1

2

3

4

5

6

struct Student

{

char name[100]; // 姓名

char sex[10];// 性别

int age; // 年龄

};

这就是一个结构体,也就是下面的格式

1

2

3

4

struct 结构体名字

{

// 成员属性

};

这里我们需要记住的是struct 结构体名字才是结构体的类型,大家不要记混了.这里给大家使用一下.

1

2

3

4

5

6

7

8

9

10

11

12

13

struct Student

{

char name[100]; // 姓名

char sex[10];// 性别

int age; // 年龄

};

int main()

{

 

struct Student stu = { "张三", "男", 18};

printf("%s %s %d\n", stu.name, stu.sex, stu.age);

return 0;

}

初识C语言(下)_操作符_27


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.51cto.com/byte/6021576
相关文章
  • C语言学习基础知识分享

    C语言学习基础知识分享
    写在前面 我们正式开始接触到C语言,这是我在学习过C语言后重新写的博客,我把之前的稍微优化了一下,希望能用更加朴素的语言和大家分享
  • C语言基础知识分享续篇

    C语言基础知识分享续篇
    写在前面 好了,现在我们开始C语言的第二个部分.今天我们需要看下面几个知识点,都是非常简单的,我们主要认识一下. 数组 我们知道一个一
  • C语言实现求解素数的N种方法

    C语言实现求解素数的N种方法
    哈喽各位友友们,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!我仅已此文,手把手带领大家探讨利用试除法、筛
  • C语言利用goto语句设计实现一个关机程序

    C语言利用goto语句设计实现一个关机程序
    goto语句其实在平常中我们 除了学习分支语句和循环语句时,介绍循环语句时,才会知道有goto语句这个用法,那读者可能会问:我们还有学
  • VS及Unity安装和使用Nuget包

    VS及Unity安装和使用Nuget包
    一、百科 Nuget是一个包(package)管理平台,确切的说是.net平台的包管理工具,它提供了一系列客户端用于生成,上传和使用包(package),
  • C/C++ Qt实现文章小说人物关系分析

    C/C++ Qt实现文章小说人物关系分析
    一、所需工具软件 1. Visual Stuido 2. C++ 二、使用步骤 1.引入库 代码如下(示例): 1 2 3 4 5 6 7 8 9 10 11 #include QtGuiApplication1.h #includeqDebug #incl
  • C语言实现三子棋的代码

    C语言实现三子棋的代码
    一、问题描述 用 c 语言实现三子棋。 二、基本流程 在写三子棋的代码之前,我们来看看实现这个游戏的逻辑: 1.菜单界面选择开始或者退
  • C++ system()函数的常用用法(全网最新大全)
    一.推荐: 1. system(pause) 这是萌新最常用的函数了,运行后会有个暂停的效果,在制作游戏的时候也很常见 通常用于暂停或等待用户了解完信
  • vscode调试gstreamer源码的流程介绍

    vscode调试gstreamer源码的流程介绍
    1. 安装vscode插件 C/C++ C/C++ Extension 2. 配置文件修改 vscode中每个项目都有一套配置文件集合,位于.vscode目录下,其中有: tasks.json:编译的相
  • 基于Qt实现电子木鱼小游戏的方法
    今年最火爆的解压小游戏电子木鱼,现在许多软件都上架了这个小程序。我在网上看了一下基本上都是用py和Java写的,所以我用QT重新写了一
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计