自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 c语言的变量和指针,怎么理解?

变量可以分为基础变量、数组变量、指针变量,其中数组变量非常特殊,可以进一步分为基础数组变量和指针数组变量,所以暂时不考虑数组变量。继续深入下去会涉及到指针变量运算(+/-运算)、数组指针、多级指针(指针的指针)、函数指针等。在32位系统中中,编译器会为指针变量自动分配4字节大小的内存,例如:内存。请记住这些事所有变量的特性,只是他们所存储的数据值类型有差异。学会应用指针是C语言程序员的分水岭,也是C程序员级别的试金石。那指针变量本身和数据,计算机是怎么存储和使用的?继续上面的代码,在看看简单的指针变量。

2023-01-03 18:46:42 641 1

原创 C 语言有哪些优点?

C的算子涵盖范围很广,一共有34个算子。因此,C既具有高级语言的功能,又具有低级语言的许多功能。结构化语言的显着特点是代码和数据的分离,即程序的各个部分除了必要的信息交换外是相互独立的。C的数据类型包括:整数、实数、字符、数组、指针、结构体、联合体等,可用于实现对各种复杂数据类型的操作,并引入指针概念使程序更高效。C语言以函数的形式提供给用户,易于调用,并具有多种循环和条件语句来控制程序的流程,使程序完全结构化。此外,C语言具有强大的图形功能,支持多种显示器和驱动程序,具有强大的计算功能和逻辑判断功能。

2022-12-29 19:45:25 1383

原创 C语言仅凭自学能到什么高度?

此处不要再往下看,停顿5分钟,写出你的答案,然后跟后面的答案对比。-----------停顿5分钟------------------------------------

2022-12-27 19:37:45 8531 3

原创 数据结构抽象数据类型的表示和实现

抽象数据类型和数据类型实质上是一个概念,只是抽象数据类型的范围更广,除了已有的数据类型外,抽象数据类型还包括用户在设计软件系统时自己定义的数据类型。因此,不论ADT的内部结构如何变化,只要其数学特性不变,都不影响其外部的使用,从而为实现软件的部件化和可重用性提供了保证,进而提高了软件生产率。抽象数据类型的定义仅取决于它的一组逻辑特性,而与其在计算机内部如何表示和实现无关,即不论其内部结构如何变化,只要它的数学特性不变,就不影响其外部的使用。printf("请输入复数C1的实部(e1)和虚部(e2):");

2022-12-22 18:46:02 1353

原创 线段树能解决多少问题?

如果不修改 tree,那么显然查询的区间只要包含了 A[1] 就一定是错的,比如查询区间 [1,3] 的和 就会得到错误的答案。对于求和,我们需要首先将叶子节点改为修改后的值,另外所有叶子节点到根节点路径上的点的区间和都加上 delta,其中 delta 就是改变前后的差值。我们可以将区间 A 和 区间 B 分别作为一个树的左右节点,并将 A 的区间和与 B 的区间和分别存储到左右子节点中。我们知道,线段树的叶子节点都是原数组上的值,也是说,线段树的 n 个叶子节点对应的就是原数组。

2022-12-20 18:54:08 409

原创 C++ 异常处理

异常是程序在执行期间产生的问题。C++ 异常是指在程序运行时发生的特殊情况,比如尝试除以零的操作。

2022-12-15 19:00:54 129

原创 用链表的目的是什么?省空间还是省时间?

可以说,本科的算法数据结构这本书,其中一大半的篇幅都在教这个改进过程/思路——只不过绝大多数的师生乃至写教材的老师都没意识到这点,反而习惯性的分章节摘开、把明显具有演进关系的概念割裂成一个个final class讲解/学习,再加上考试指挥棒的作用,这才使得绝大多数人被误导到了错误的方向。但“随随便便插入数据”的二叉树很可能“偏”的非常厉害。错误的根源在于,你把链表当成了一种整体的、不可分割不可更改的完整概念——然后,就着这个概念,考虑它的用途它的优点它的弱点,总结出一二三四然后背诵。可申请少了又不够用啊。

2022-12-12 16:30:52 664

原创 在C++中,为什么部分程序员喜欢在循环中写‘++i’而不是‘i++’?

自入行以来,无论是查阅资料、技术博客亦或是同事间的技术交流,都有一个共识:在循环的时候,务必使用前置操作符,因为其性能优于后置操作符,久而久之,这个就像一个不成文的规定,大家都在遵循,久而久之,成为潜移默化的编码习惯。而使得大家持有这个观点的原因就是后置操作会产生临时变量,而后置操作则不会。后置操作和前置操作,一个会产生临时变量,一个不会产生临时变量,其原因是:前置操作遵循的规则是change-then-use,而后置操作遵循的规则是use-then-change。正因为后置操作的use-then-chan

2022-12-09 18:36:46 9379 7

原创 学了C语言基本的语法,感觉转化代码的能力还是不强,编程能力到底该怎样提升?

目前来看市面上主流的主要是 JAVA 和 C++ , GO 语言这几年也比较火,是类 C 的语言,有 C 语言的基础学起来是很快的。比如,JAVA 程序就是跑在 JVM 上面的,如果你想成为一个优秀的 JAVA 程序员,就避免不了要去了解 JVM。同样的需求可以有 1-n 种实现方式,实现方式上又各有自己的优缺点,根据场景的不同需要采用不同的实现方式。经常会有同学问,这个数据结构的代码是 Java 的还是 C 的还是 C++ 的。要提高自己的编程能力,第一步需要的是转变自己的学习模式。

2022-12-08 18:57:43 500

原创 C语言有必要学的很深入细致吗?

c语言作为一门高级语言来说,它本身的知识点是很少的,很容易掌握,它没有诸如『类,接口,继承,多态,分派,模板』等等唬人的概念,当然不是说你不能通过c实现这些概念而是这个语言本身没有那么多花活。所以掌握c语言语法可以说是比较简单的。的确可讲的不多。但是,less is more,少即是多。即便熟练掌握c语言的语法,你也几乎干不了活,由于基础设施的缺乏,标准容器的缺少,各种标准碎片化严重,很多东西你要自己撸,俗称『造轮子』,这就对你数据结构和算法上面的要求比较高了。掌握这些东西可能比单纯掌握c语言要复杂不少,当

2022-12-07 19:01:23 4279 1

原创 想学C语言,跟着一个大佬学,中间一步错,后面就步步错,我该怎么办啊?

大一的新生怎么学C语言呢?我简单把我的想法说一下吧。1. 自学才是硬道理。强大的自学能力是独自解决问题能力的根本,程序员需要拥有强大的独自解决问题的能力。2. 一个人可以走的更快,但一群人才能走的更远。3. 入门阶段,coding为主,看书为辅。看书只是C语言学习的最简单的一步。入门阶段,动手实践,刷题才是最重要的。coding能够让你变强。4. 请记住这个公式:5. 如果你以后不想当优秀的工程师,不想在计算机这条路上走太远,只当一个平平淡淡的码农。推荐一条路:跟着老师一步一步走,跟着大学的培养方案,一步一

2022-12-05 20:12:38 3145

原创 C语言入门,用什么编译器比较好?

两部分,编译器介绍与建议、IDE推荐编译器建议:1. Tiny C CompilerTCC编译速度极其快,非常适合入门,不需要过多考虑性能影响,稳定快速,比较推荐。2. GNU C Compiler大家都在用,虽然应该被扫进历史的垃圾桶,不过这个东西支持的新特性(BUG)多,所以可以尝试。3. MSVCMSVCCL是大众喜闻乐见的,VS自带的东西,虽然语法错误可能导致编译器BOOM,不过多年技术沉淀(包括从Borland挖人)使得这个东西在Windows平台上是毫无争议第一的,现在来说比较稳定,也强烈推荐,

2022-12-03 19:13:22 6096

原创 初学C语言,用什么软件练习编程?

这也是一个轻量级的C/C++开发环境,免费、开源、跨平台,相比较Dec-C++比较单一的功能来说,支持自动补全、语法提示和语法检查,除此之外,还自带有许多现成的工程模板,可以快速开发GUI、Qt、OpenGL等应用,插件扩展也比较丰富,对于初学者来说,也是一个非常不错的选择。2.C++编译器:也即C4droid,手机上的一个C/C++编程软件,基本功能和C语言编译器差不多,也可以直接编译运行C语言程序,、1.C语言编译器:这是手机上的一个C语言编程软件,可以直接在手机上编译运行C语言程序,

2022-12-02 19:27:21 1649

原创 C++ 更常用 string 还是 char* 呢?

整理了一些想法,抛砖引玉。经验大多基于 C++17,工作中不需要对 C 暴露接口,偶尔会使用 C 库或者 C 风格的接口,在与 C 交互上是半吊子水平。仅在 C++17 后才可用,对于没有条件的项目,可以考虑使用 Abseil 等三房库提供的实现,但要留意第三方的实现和可能并不保证完全可互换。

2022-11-29 20:07:14 3652 3

原创 用连续内存空间实现线性表

用结构体,实现了线性表初始化,删除索引的元素,查找元素,销毁线性表空间。

2022-11-25 16:55:46 110

原创 作为非计算机专业的学生,觉得 C 语言远比其他语言易于上手,正常吗?

你只需学会它们的3的用法、并不需要自己懂这些“神秘语言元素”的实现:你压根不需要像用C时一样,自己绞尽脑汁用最少的指令实现这类语言提供的基本设施——越是基本的设施越是值得字斟句酌:用python你可以直接用“字典”;可见,哪怕你对C对数据结构有那么一丁点最粗浅的了解,你都绝不会用“python有字典”来证明它的难、证明C的易用——恰恰相反,学C的目标之一,正是为python实现字典、实现“无需区分变量类型的变量”、帮助初学者“不知道指针照样能用内存,因为我在后台偷偷替他们做了嘿嘿哈哈……

2022-11-24 18:53:28 159

原创 在定义指针的时候,写成「int* p;」和「int *p;」哪个更好?

仔细研究下就能体会到这种贴近编译器的理解方式的强大之处。注意到其他答主和我的评论区有提到这种声明在初始化跟另起一行赋值时的一致性问题,也就是。,如果后者成立,一切派生类型的初始化就都完犊子了。理解为指针(虽然更human friendly一些),上面的“运算式”写法。更重要的是这个理解方式可以应用到更加复杂的类型声明语句中,比如典型的。理解也是OK的,还不能体现前者的优势,那么像下面这样带括号的呢?这样子理解虽然对编译器比较友好而反人类,但确实是精准无歧义的。,这个填充是唯一的)。

2022-11-23 19:29:40 4303

原创 25岁以后还适合花钱学编程,当程序员吗?

因为你目前也是换了很多的工作,虽然不知道具体做了些什么,但是应该也有一种随波逐流的感觉,哪样合适就干哪样的心态。编程初学者总是在想,万一我学不好怎么办,找不到工作怎么办,担忧太多,就放弃了学习的打算。,你目前的年龄阶段,在学习能力、记忆力各方面都相对较好,但同时也要注意时间成本的投入,时间很宝贵的。鞋子合不合脚只有自己知道,你适不适合学习编程做程序员,那你得对自身实力做好清晰的估算,对职业做好深入的了解之后自行判断。很多编程初学者们,说编程太难,就不敢学了,殊不知在其他行业,还是有洪水猛兽在等着你。

2022-11-21 20:14:22 2568

原创 刚上大一,C 语言压根听不懂怎么办?

执行之后,黑框框里出现了hello world,你就知道printf是什么意思了。执行之后,黑框框里出现了1,你就知道int a是什么意思了。你就告诉电脑:我一会告诉你一个数a,还有另一个数b,你就负责告诉我a+b等于多少就行。因为大学里教课,都是一上来先给你讲大堆你没有听说过的概念和名词,人都傻了,还怎么学?比如说啊,我想让电脑帮我算数,就简单的两个数相加,怎么办?C语言就是门语言,你就把他当成汉语,英语之类的来学。你看,咱们通过c语言,让电脑听懂了我们说的话。学习c语言的方法,就是多练,多打。

2022-11-19 18:55:18 11976 9

原创 C语言一定要背在心里的18个经典程序

for(i=0;i

2022-11-17 20:51:33 216

原创 没基础的大学生如何自学c语言 ?

大家想必都知道费曼技巧,这也是其中的一种应用了,把你自己弄懂的东西教给别人,让别人也能看懂,在这个过程中你肯定还是要把一个完整的项目给做出来的,一整套下来,你会将自己理解的东西掌握的更透彻更深入。每个人的学习方法都不一样,有的人喜欢边做项目边学习,有的人则喜欢学一段时间做一个项目,有的人喜欢看书学,有的人喜欢看视频学,这些都不是问题,重要的是找到适合你自己的。而且不用说,这也是最快最有效的方法了,毕竟编程这件事,光有理论是不够的,动手实践才是关键也是最终目的。只有这样,你的学习才是有效的。

2022-11-16 19:39:46 6153

原创 C语言到底有多强大?

6、很多编译器,几乎所有操作系统Windows,Linux,Unix的大部分代码都是C,C在背后做了很多东西的,也许开发游戏用c++,安卓用Java更为合适,图形界面的用其他语言开发效率更高一些(因为他们封装了很多东西),但同样的原因导致略微接近底层的功能其他语言根本干不了!具有高级语言的特点,又具有汇编语言的特点。像Java,python,c#.等高级语言底层都是通过C语言来实现的,所以学好精通C语言在学习使用其他语言有很大帮助就能相对容易的直到其内部的调用过程,最后写出高质量的代码。

2022-11-15 16:33:27 423

原创 零基础学习C语言,怎么入门?

C语言同C++、Python等都是通用性的编程语言,它们不针对某一个特定的方向,能做的事情很多。C语言主要用于底层开发,Windows、Linux、Unix 等操作系统的内核90%以上都使用C语言开发,开发硬件驱动,让硬件和操作系统连接起来,这样用户才能使用硬件、程序员才能控制硬件。借用我一个朋友的名言:“现在的程序员,不掌握好几门语言都不好意思跟别人打招呼。”就目前的企业的岗位设置来说,只会C语言的话(当然,能达到深究算法、操作系统、数据库、网络协议的C语言工程师除外),基本上是找不到工作的。

2022-11-14 19:00:10 1048 1

原创 C语言详解 FILE文件操作

由于不设置缓冲区的文件处理方式,必须使用较低级的I/O函数(包含在头文件io.h和fcntl.h中)来直接对磁盘存取,这种方式的存取速度慢,并且由于不是C的标准函数,跨平台操作时容易出问题。所谓随机读写,是指读完上一个字符(字节)后,并不一定要读写其后续的字符(字节),而可以读写文件中任意位置上所需要的字符(字节)。事实上,当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘,如下图所示。其实,除了文本文件外,所有的数据都可以算是二进制文件。

2022-11-12 19:11:08 2923

原创 初学C语言有什么建议?

确实新手不学C语言学什么呢?为什么这么推荐新手学C语言呢具体看看下面的解释吧?

2022-11-10 19:04:43 4691 2

原创 为什么很多新型编程语言都抛弃了 C 语言风格的 for 语句?

但是这又是for的另一个命门,因为只有一个statement,所以没法初始化不同类型的两个变量,或者在没有逗号表达式的语言里面做一些额外的初始化操作。另外有人提到,for用分号分隔的三个部分都是语句,这是不对的,condition和increment部分是表达式而不是语句……这就是上不上下不下,看起来,很多细节暴露给你可以去处理,但实际用起来,这也用不了,那也用不了。如果限定在特定的遍历的场景下,for循环又不像foreach那样舒服,太多细节要自己处理。这些问题的答案当然都是明确的,但都是完全不直观的。

2022-11-09 19:34:46 25774 18

原创 C语言函数最简单,最细致,最易懂的函数讲解,嗨翻C语言

1.任何一个函数在使用之前都必须进行定义定义函数的目的就是为了写清楚你这个函数是干啥用的,里面包含了哪些代码。2.举例比如定义一个函数用来计算两个整数的和。分别在第3行、第9行定义了sum函数、main函数,其中sum函数的作用是计算两个整数的和。函数定义好后,并不会马上执行函数内部的代码,要有人调用它才会执行内部的代码。就好像你的手机虽然有打电话的功能,但是只有按了拨号键,才会执行打电话的功能。程序运行时就会先调用main函数,按顺序执行第11~14行代码,因为main函数是程序的入口。

2022-11-08 20:28:12 589 1

原创 C语言-动态内存分配

在一个函数运行期间,系统为该函数中数组分配的空间会一直存在,直到该函数运行结束时,该数组的空间才会被系 统释放。而malloc函数又只能够返回第一个字节的地址,在经过前面的强制转换的类型,指向一个存储单元。所以说parr指向的是数组的首地址也就是第一个元素的地址。例如一个数组存储的是一个班级的信息。而另外的函数想要对该函数中的数据进行操作的话,显然是错误的也是不能够被允许的。在构造动态数组的时候,我们先来看看静态数组是怎么分配空间的。数组的长度不能在函数的运行过程中,动态的扩充或者缩小。

2022-11-07 19:18:18 1349 2

原创 如何精通C语言

这是因为,一个字符串常量存储在内存的某一位置,调用它的时候,并没有把整个字符串传递进去,而是只传递一个指针常量(一个地址),然后执行和数组相同原理的下标引用。区分它们,只有一个办法,掌握操作符优先级,变量f先和什么结合,f就是什么,前面剩下的,就是返回类型。指针常量,指针的值不能变,指针指向的数据可变,比如。,&a[n],指向数组外,指向并不会有错误,但是不能执行间接访问,即*vp=a[n]是非法的。,for语句,括号内需要三个表达式,最后一个不写,表示空表达式,空表达式也是表达式。

2022-11-05 19:16:58 1171

原创 12个C语言必背实例

原因如下:如果数组s中含有10个元素,那么它的长度为10,而s的数组下标从0开始那么下标的最大值为9,j这里是代表数组下标,所以开始时的最大值应是。处理每行第一个数和对角线上的数都是1意外,其它的数就是前一行相邻的两数之和。对存入数组中的元素进行判断,统计出各个候选人的票数和无效的票数。今天分享的也是一个入门级实例,从键盘输入一个表示年份的整数,判断该年份是否为闰年。首先找到数组中的最大值和最小值,记录它们的位置,然后交换位置,最后将交换后的数组输出。,如果不是,就判断是不是空格,是空格的话,单词数加1.

2022-11-04 18:39:37 543 1

原创 C 与 C++ 的真正区别在哪里?

一个C高手,能掌握更多的基础模块实现方案,什么无锁消息队列,内存管理,线程调度器,时钟,各种算法库,甚至不同风格的面向对象的架构,这都是自己纯手工打造,然后根据业务需要定制这些基础模块的设计方案和参数,以追求应用业务的极致性能,和极致可靠。上限,是气宗C来的高。Python的编译器,和大量的库,都是用C/C++写的,会熟练使用这些库,也就站在了巨人的肩膀上,还不是一个,是一群巨人。C++就是西餐厨师的刀,有一大堆不同款式的刀,切不同的东西得用不同的刀,每种刀还有不同的手法,显得非常专业,高大上。

2022-11-02 20:41:37 7863 9

原创 你是怎么学好C++的?

C++是最难的语言。这个世界上最难的编程语言可能非C++莫属了。

2022-10-31 19:49:21 191

原创 C语言 -- 字符串详解

如果 src 比 dst 长,则 src 剩余部分的字符仍会被复制,而且它们会覆盖 dst 后面的内存空间的值,如果这除内存空间原本就存放有值,则会导致原本的数据丢失,这样会造成很严重的后果。字符串常量与指针关系密切,因为字符串常量的值,实际上表示的是存储这些字符的内存空间的地址,更准确地说是字符串常量中第 1 个字符的地址,而不是这些字符本身。字符串是一种非常重要的数据类型,但是C语言不存在显式的字符串类型,C语言中的字符串都以字符串常量的形式出现或存储在字符数组中。用于存放字符的数组称为字符数组。

2022-10-30 18:48:49 1669

原创 零基础如何学习c语言

想转行c语言的小伙伴们可能都在纠结这个问题,我是零基础,该如何学习c语言呢。接下来就讲讲0基础如何掌握c语言。

2022-10-29 18:45:30 5598 1

原创 10分钟了解C语言基本语法知识

我们先谈谈什么是函数?在大家的认知里面,函数是数学领域的一个名词,它可能是如下图所示:​但是,这只是数学领域中的函数,与编程语言中的函数完全不同。开始执行时,函数可以被输入一些值执行过程中,函数可以做一些事情执行完成后,函数可以返回一些值​让我们看看我们的这个主函数,在这3个特性上,分别做了什么。​主函数什么都没有输入主函数打印了一行字到屏幕上主函数返回了0​其中,int表明了函数的返回值类型,int是integer(整数)的缩写。

2022-10-28 19:11:48 236

原创 大一C语言该学到什么程度?

extern可以省略;14.数组 数组:一块连续的,大小固定并且里面的数据类型一致的内存空间, 数组的声明:数据类型 数组名称[长度n]这里的static是对函数的作用范围的一个限定,限定该函数只能在其所处的源文件中使用,因此在不同文件中出现相同的函数名称的内部函数是没有问题的。variable-list 结构变量,定义在结构的末尾,最后一个分号之前,您可以指定一个或多个结构变量。C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项。

2022-10-27 18:50:55 266 1

原创 现在的编程语言越来越多,为什么 C 和 C++ 还没有被现在的时代淘汰呢?

C/C++会不会被时代淘汰?一般我们常说:C/C++具有较高的执行效率。其实这句话不是特别准确,有时候它们并不一定效率高。换句更恰当的话说:C/C++,特别是C语言,控制粒度很细,与机器语言有着相当稳固的对应关系。以C语言的if···else为例,它的汇编代码如下图所示。

2022-10-26 18:47:40 6196 2

原创 初学者是学习 C 语言还是 C++ 好?各有何利弊?

1、从源码角度探讨C和C++的区别究竟多大C是不是C++的子集这些概念都不重要,不管是自学C还是C++目的是什么?当然是拿来应用解决问题,在解决问题中体会每个知识点有什么用,单纯的看课本看视频是很难坚持下去的。至于C和C++先学哪个完全不用纠结,我自学C++的时候刚开始就没有永C++的面向对象,就是把C++当成C语言用。作为自学C++并成功转型的学长来看,你的目标是会用C或者C++,很多细枝末节都是在工作中遇到bug之后不断打磨的过程。

2022-10-25 18:49:25 4293

原创 C++ string 成员函数 length() size() 和 C语言 strlen() 的区别

对 sizeof 而言,因为缓冲区已经用已知字符串进行了初始化,其长度是固定的,所以 sizeof 在编译时计算缓冲区的长度。(1)当 string 中含有空字符’\0’,使用 strlen() 获取 string 的长度时会被截断,使用成员函数 length() 和 size() 可以返回 string 的真实长度。(5) C++ string 成员函数 length() 等同于 size(),但是和 C 库函数 strlen() 有着本质区别,使用时切勿混淆。毕竟strlen()是C语言中的函数。

2022-10-23 19:54:44 875

原创 C语言和C++的区别到底有多少?不要再傻傻分不清楚了

在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局命名空间中,会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或者名字污染,namespace关键字的出现就是解决这种问题。引用:引用不是新定义的一个变量,他是原变量的一个别名,编译器不会为引用变量开辟空间,它和他引用的变量共用同一块内存空间。在C++中,有严格的参数类型检测,没有参数列表的函数,默认为void,不接收任何参数。在C语言中,函数没有指定的参数列表时,默认可接收任意多个参数。

2022-10-21 16:25:50 411

空空如也

空空如也

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

TA关注的人

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