自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 4.2.函数指针与typedef

函数指针的分析方法也是源于优先级与逐层剥离的基本理论//函数指针//函数指针数组//函数指针数组指针C语言指针系列目录。

2024-09-13 06:53:35 1163

原创 4.1.指针数组与数组指针

(1)在分析C语言问题时不要胡乱去猜测规律,不要总觉得c语言无从捉摸,从已知的规律出发按照既定的规则去做即可。(1)找到核心后从内到外逐层的进行结合,结合之后可以把已经结合的部分当成一个整体,再去和整体外面的继续进行结合。C语言指针系列目录。

2024-09-06 21:25:46 550

原创 3.10.输入型参数与输出型参数

(1)看到一个函数的原型后,怎么样一眼看出来哪个参数做输入哪个做输出?函数传参如果传的是普通变量(不是指针)那肯定是输入型参数;如果传指针就有2种可能性了,为了区别,经常的做法是:①如果这个参数是做输入的(通常做输入的在函数内部只需要读取这个参数而不会需要更改它)就在指针前面加const来修饰;②如果函数形参是指针变量并且还没加const,那么就表示这个参数是用来做输出型参数的。③譬如C库函数中strcpy函数C语言指针系列目录。

2024-09-05 08:58:03 893

原创 3.9.指针与函数传参

实际上实参x和y永远无法真身进入子函数内部(进去的只能是一份拷贝),但是在swap2我们把x和y的地址传进去给子函数了,于是乎在子函数内可以通过指针解引用方式从函数内部访问到外部的x和y真身,从而改变x和y。(1)传值调用描述的是这样一种现象:x和y作为实参,自己并没有真身进入swap1函数内部,而只是拷贝了一份自己的副本(副本具有和自己一样的值,但是是不同的变量)进入子函数swap1,然后我们在子函数swap1中交换的实际是副本而不是x、y真身。(3)数组作为函数形参时,[]里的数字是可有可无的。

2024-09-04 08:59:00 1026

原创 3.8.指针、数组与sizeof运算符

(2) strlen是一个C库函数,用来返回一个字符串的长度(注意,字符串的长度是不计算字符串末尾的’\0’的)。(1)sizeof(数组名)的时候,数组名不做左值也不做右值,纯粹就是数组名的含义。(1) sizeof是C语言的一个运算符(主要sizeof不是函数,虽然用法很像函数),sizeof的作用是用来返回()里面的变量或者数据类型占用的内存字节数。(1)sizeof测试一个变量本身,和sizeof测试这个变量的类型,结果是一样的。(1) 32位系统中所有指针的长度都是4,不管是什么类型的指针。

2024-08-20 09:22:20 562

原创 3.7.指针与强制类型转换

C语言中的数据类型的本质,就是决定了这个数在内存中怎么存储的问题,也就是决定了这个数如何转成二进制的问题。一定要记住的一点是内存只是存储1010的序列,而不管这些1010怎么解析。所以要求我们平时数据类型不能瞎胡乱搞。

2024-08-20 07:20:19 993

原创 3.6.指针与数组的天生姻缘

(1) 指针参与运算时,因为指针变量本身存储的数值是表示地址的,所以运算也是地址的运算。(2) 指针参与运算的特点是,指针变量+1,并不是真的加1,而是加1*sizeof(指针类型);如果是int *指针,则+1就实际表示地址+4,如果是char *指针,则+1就表示地址+1;如果是double *指针,则+1就表示地址+8.(3) 指针变量+1时实际不是加1而是加1*sizeof(指针类型),主要原因是希望指针+1后刚好指向下一个元素(而不希望错位)。p = a;

2024-08-19 07:58:33 512

原创 3.5、深入学习一下数组

1、&a和a做右值时的区别:&a是整个数组的首地址,而a是数组首元素的首地址,这两个在数字上是相等的,但是意义不相同,意义不相同会导致他们在参与运算的时候有不同的表现。2、a和&a[0]做右值时意义和数值完全相同,完全可以互相替代。3、&a是常量,不能做左值。4、a做左值代表整个数组所有空间,所以a不能做左值。//分开独立定义4个int型变量int a[4];//一次定义一个数组,包含4个int型变量//定义数组的同时初始化,这样是可以一次赋值的//定义指针并初始化a[0] = 4;

2024-08-18 18:36:39 892

原创 3.4、const关键字与指针

所以在C语言中使用const就是一种道德约束而非法律约束,所以大家使用const时更多是传递一种信息,就是告诉编译器、也告诉读程序的人,这个变量是不应该也不必被修改的。(3) 在gcc中,const是通过编译器在编译的时候执行检查来确保实现的(也就是说const类型的变量不能改是编译错误,不是运行时错误。(2) 在某些单片机环境下,const修饰的变量是不可以改的。(4) 更深入一层的原因,是因为通过编译器认定这个变量是const的,运行时并没有标记const标志,所以只要骗过编译器就可以修改了。

2024-08-18 16:36:56 409

原创 3.3 野指针问题

(1) 野指针,就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)(2) 野指针很可能触发运行时的段错误(Segmentation fault)(3) 因为指针变量在定义时,如果未初始化,值也是随机的。指针变量的值其实就是别的变量(指针所指向的那个变量)的地址,所以意味着这个指针指向了一个地址是不确定的变量,这个时候去解引用就是去访问这个地址不确定的变量,所以结果是不可知的。//野指针示范int *p;*p = 5;return 0;

2024-08-18 06:36:04 861

原创 3.2、指针带来的一些符号的理解

(1) 指针定义时可以初始化,指针的初始化其实就是给指针变量初值(跟普通变量的初始化没有任何本质区别)(2) 指针变量定义同时初始化的格式是int a = 5;(3) 指针变量定义时不初始化,后面再赋值int a = 5;int *p;p = &a;

2024-08-18 06:28:48 435

原创 3.1、指针到底是什么?

(1) 当我们int *p定义一个指针变量p时,因为p是局部变量,所以也遵循C语言局部变量的一般规律(定义局部变量并且未初始化,则值是随机的),所以此时p变量中存储的是一个随机的数字。(2) 间接访问(CPU的间接寻址)是CPU设计时决定的,这个决定了汇编语言必须能够实现间接寻址,这个决定了汇编语言必须能够实现间接寻址,又决定了汇编之上的C语言也必须实现间接寻址。指针完整的名字应该叫指针变量,简称指针。(1) 指针的出现是为了实现间接访问,在汇编中都有间接访问,其实就是CPU的寻址方式中的间接寻址。

2024-08-18 05:47:31 458

原创 C语言指针系列目录

C语言高级专题第3部分-4.3指针才是C的精髓》4.3.8、指针、数组与sizeof预算符。4.3.10、输入型参数与输出型参数。4.3.6、指针与数组的天生姻缘。4.3.7、指针与强制类型转换。4.3.9、指针与函数传参。

2024-08-18 05:17:13 292

原创 shell脚本入门2

shell脚本的进阶应用,帮助新手更好的理解shell脚本

2024-07-21 16:13:57 339

原创 shell脚本入门1

shell脚本新手,轻松入门shell脚本

2024-07-21 14:01:02 386

转载 Linux下Socket编程【编辑中...】

1.什么是SocketSocket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是一种特殊的I/O,Socket也是一种文件描述符。Socket也具有一个类似于打开文件的函数调用Socket(),该函.

2021-07-11 17:39:52 186

原创 Linux文件和目录管理

关于这部分内容,一直都是自己不太了解的地方,这里做一下总结。1.Linux文件Linux中有六种文件类型,分别是普通文件,目录文件,链接文件,设备文件,套接字文件,管道文件。下面详细介绍各类文件。普通文件:包括纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data)目录文件:Linux 中的目录也是文件,链接文件:符号链接是指向系统上其他文件的引用,类似windows下的快捷方式。设备文件:Linux 中的硬件设备如硬盘、鼠标等也都被表示为文件,即为设备文件。设备文件一般

2021-06-23 22:45:28 140

原创 初识Linux

1.Linux简介Linux,全称为GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统。这里的Linux,指的是Linux内核,一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。我们经常说的Linux系统,是指在Linux内核基础上,实现带GUI界面的操作系统,如Debian,Ubuntu,CentOS等。Linux现在已经是现代互联网体系中不可或缺的一部分了,因为它一直在你身边,从航天到军事、从科研到金融、从手机到电脑,无处不在!各种嵌入式设备,如手表、机器人、广为人之

2021-06-19 10:05:13 160

原创 Linux系统的安装(ubutnu18.04)

文章目录前言1.新建一个虚拟机2.设置我们准备好的镜像文件3.点击完成,等待系统安装完成前言虚拟机:VMware WorkstationUbuntu版本:18.041.新建一个虚拟机成功安装VMware Workstation后,有两个可用的软件,其中,VMware Workstation Pro为收费版,需要密钥。VMware Workstation 15 Player为免费版,本文选择使用。2.设置我们准备好的镜像文件3.点击完成,等待系统安装完成...

2021-06-16 21:27:08 191

原创 linux系统的软件安装(Debian\Ubutnu)

linux系统的软件安装(ubutnu)Linux下常见的三种软件安装方式,分别是在线安装、软件包安装和源码编译安装。一、在线安装 由于操作系统中软件包存在复杂的依赖关系,为了解决软件包的依赖性问题和获取问题,APT顺势出现了。 APT 是 Ubuntu Linux 中的命令行软件包管理工具,用于获取、安装、编译、卸载和查询 Deb 软件包,以及检查软件包的依赖关系。1、apt常用命令# 更新本地索引,即更新/var/lib/apt/lists 里边的内容sudo apt-get upd

2021-06-13 12:24:17 383

原创 使用apt insatll 出现如下问题的解决方法

使用apt insatll 出现如下问题E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), is another process using it?解决办法删除锁定文件sudo rm /var/lib/dpkg/

2021-06-09 20:24:05 309

原创 ubuntu18.04 小操作(学习记录)

一、 ubuntu18.04 普通用户与root根用户之间的切换1、普通用户切换root根用户sudo su2、root用户切换普通用户su 用户名二、ubuntu18.04 日期改为中国日期1、在root用户下,改为中国日期命令timedatectl set-timezone Asia/Shanghai2、查看日期命令date三、ubuntu18.04修改账户密码有长度、字符限制的解决方法1、使用 “sudo su”切换到root用户2、使用 “passwd 用户名”修改密

2021-04-10 10:38:34 202

原创 VSCode终端无法输入命令的解决方法

VScode 终端无法输入,一片空白1、现象如图所示:2、解决方法:首先ctrl+,(逗号)在弹出的搜索框里,输入shell,找到Windows设置项,点击在“settings.json”在{}中加上`"python.jediEnabled": false, "terminal.integrated.shell.windows":"C:\\Windows\\system32\\cmd.exe"//(c:\\ 后面的内容根据自己的cmd.exe路径更改)此时可以验证VSCode终端能

2021-04-10 10:37:17 9734 8

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除