首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当我应该而且不应该在C中使用"const"时感到困惑

当你在编写 C 语言代码时,有时候你可能会感到困惑,不知道何时应该使用 "const",何时不应该使用。下面是一些建议,可以帮助你更好地理解何时使用 "const":

  1. 当你的数据不会改变时,使用 "const" 是一个好主意。这可以帮助编译器检测到潜在的错误,并确保你的代码更加可靠。
  2. 当你的函数不会修改其参数时,使用 "const" 是一个好主意。这可以帮助编译器检测到潜在的错误,并确保你的代码更加可靠。
  3. 当你的变量是一个指针时,使用 "const" 可以帮助确保你不会意外地修改指针所指向的内存。
  4. 当你的变量是一个数组时,使用 "const" 可以帮助确保你不会意外地修改数组中的元素。

总之,使用 "const" 可以帮助你编写更加可靠和安全的代码,并且可以帮助编译器检测到潜在的错误。如果你不确定何时使用 "const",可以尝试使用 "const",并在需要修改数据或参数时去掉 "const"。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django的设计哲学

仅当“魔术”功能创造了其他方式无法实现的巨大便利,才值得使用而且它的实现方式也不会使试图学习该功能的开发人员感到困惑。...Django应该努力“标准化” URL,以免搜索引擎机器人感到困惑。 这就是 Django 会自动在网址结尾加 ‘/’( APPEND_SLASH 默认设置为 True) 的原因。...4、XML不应该用于模板语言 使用XML引擎解析模板会在编辑模板引入一个全新的人为错误世界,并在模板处理中产生不可接受的开销。...6、明显地对待空白 模板系统不应使用空格执行魔术操作。如果模板包含空白,则系统应在处理文本将其视为空白–仅显示它。任何空格,只要模板标记没有的,都应该显示它。...3、松耦合 视图不应该在乎开发人员使用哪种模板系统,甚至也不必在乎模板系统是否被使用。这一点使得 django 可以轻松地和 Vue 配合使用

2.2K10

C++核心准则C.22:保持默认操作的一贯性

C.22: Make default operations consistent C.22: 保持默认操作的一贯性 Reason(原因) The default operations are conceptually...如果拷贝/移动构造和拷贝/移动赋值做的是逻辑上不同的事情,用户会感到诧异;如果构造函数和析构函数没有为资源管理提供一致的想法,用户会感到诧异;如果拷贝和移动操作没有对应构造函数和析构函数的动作,用户会感到诧异...这会导致困惑和错误。...(复杂)在拷贝/移动构造函数写入的任何成员变量也应该被其他的构造函数初始化。...(复杂)如果析构函数修改某个成员变量,那么这个成员变量应该在拷贝/移动构造函数或者赋值运算符中被写入。

31420
  • 为什么Python没有main函数?

    简而言之,需要在大量可执行的代码定义一个至关重要的的开头。 不难看出,对于这些语言来说,main函数是不可或缺的组成部分。 但是,当我们把目光转向Python,就会发现情况大不相同。...有些学生可能会感到困惑,因为他们经常看到或编写以下代码: # main file def main(): …… if __name__ == '__main__': main() 这不就是...其次,如果有多个文件,强烈建议不要将这个语句写在入口文件(main.py)。从理论上讲,它的内容不应该导出供其他模块使用,因为它是起点。...每次看到这些笨拙的代码,我都会感到不适。为什么要写这样的if语句?你压根不应该将这段代码包装成一个函数! 总结 打破惯性思维,编写真实的代码。...main函数是某些语言的唯一入口,但不应在Python中使用。你应该了解脚本语言的特征,并学习简单而优雅的风格。 你可以使用main.py,而不是编写main函数。

    1.8K20

    机器学习与决策树简介

    85e106ae-bc60-4759-8bf5-70fe3c126fd5-original.jpeg 电影“终结者“的“天网”被宣称使用了机器学习技术。...决策树是一种监督学习算法(具有预定义的目标变量),主要用于分类问题,也适用于不同类别而且连续的输入和输出变量。它是归纳推理中使用最广泛也最实用的方法之一。...D1 晴朗 高 高 小 不应该 D2 晴朗 高 高 大 不应该 D3 多云 高 高 小 应该 D4 雨 高 小 应该 D5 雨 低 正常 小 应该 D6 雨 低 正常 大 不应该 D7 多云 低...正常 大 应该 D8 晴朗 高 小 不应该 D9 晴朗 低 正常 小 应该 D10 雨 正常 小 应该 D11 晴朗 正常 大 应该 D12 多云 高 大 应该 D13 多云 高 正常...接下来的问题是,什么属性应该在晴朗的分支节点测试?由于我们已经在根节点上使用了前景,所以我们只决定剩下的三个属性:湿度,温度还是风。

    1.2K80

    Effective Modern C++翻译(1):序言

    想要知道什么时候应该(什么时候不应该)把一个对象声明为auto?对为什么const成员函数应该是线程安全的感兴趣?如何使用std::unique_ptr实现pimpl?...为什么你在使用lambda表达式应该避免默认的变量捕捉形式?或者是std::atomic和volatile的区别和如何正确的使用它们?...这本书的目的不在于告诉你应该做什么,不应该做什么,而是传递一个更深层次的关于这些东西是如何在C++11和C++14应用的认识。...我使用“…”来暗示这里会有其他的代码,这里窄的省略号和宽的省略号(“. . .”)间是有区别的,宽的省略号是在C++11作为变长模板使用的,这听起来有点令人困惑,其实不是,例如 template<typename...,但是带有更少的限制和缺点),例如std::auto_ptr在C++11被弃用,因为std::unique_ptr提供了同样的功能,而且做的更好。

    1.2K90

    用人的语言·为人设计

    构建有价值产品的第一条原则是它应该对某人有价值,一个真实的,现实生活的人(或者很多这样的人)。这应该是你工作要解决的一些问题或者需求。 你可能会觉得这是当然的。...,我所建立起来的联系关系是: 这两个东西不一致→这些东西看起来很相似,但是当你点击其中一个,它会A,点击另一个,它会B。→这会让用户感到困惑,妨碍了用户从我们构建的东西获得最大价值。...但是,当我说“我们的目标是不让人感到困惑”,这就没有争议了。 第二个意想不到的结果是使用术语会导致我们忽视真正的最终目标。我们开始关注和响应公司的问题而不是用户的问题。...但是,如果你的功能使用率很低,那么更有可能对人们来说你的功能不够有价值。但是,当我们不以“人”为中心提出问题,很容易忽视这一点。 “语言”可以说是一件非常重要的小事。注意你讨论正在做的工作的方式。...→ 人们应该轻松地阅读或浏览。 我们应该追求最小化。→ 人们应该能够看一眼就能知道什么最主要,应该做什么。他们不应该为选择感到困惑。 我们需要改进指标。这条曲线表现不好。

    52120

    小心这个陷阱: 为什么JS的 every()对空数组总返回 true

    最近在重构一些使用 every() 方法的代码,发现实际上并不理解其背后的逻辑。在我的理解,我认为回调函数必须被调用并返回true , every() 才会返回 true ,但实际上并非如此。...简而言之,如果你使用 every() 方法或可能为空的数组,你应该事先进行明确的检查。...numbers.every(isNumber)) { operationRequiringNonEmptyArray(numbers); } } 再次强调,只有当你有一个数组在为空不应该被用于操作...结论 当我第一次看到 every() 在空数组上的行为时,我感到很惊讶,但一旦你理解了这个操作的更大背景和这个功能在各种语言中的广泛应用,就会觉得它是有道理的。...如果你也对这个行为感到困惑,那么我建议你改变阅读 every() 调用的方式。不要把 every() 理解为“这个数组的每一项是否都符合这个条件?”

    20420

    优秀的UI设计原则

    直接操作的感觉最棒 当能够直接操作物体,用户的感觉是最棒的。在设计界面,我们增加的图标往往并不是必需的,比如我们过多的使用按钮、选项等等其他繁琐的东西仅仅是为了填满界面,这些都是画蛇添足。...表里如一 如果它看上去像个按钮,那么它就应该具备按钮的功能。设计师不应该在基本的交互问题上耍小聪明,要在更高层次的问题上发挥创造力。...弱化的视觉层次没有给用户提供如何浏览的线索,用户会感到困惑和混乱。当一切都是粗体,就没有主次之分了。 ▲ 正确示范|界面以用户的阅读习惯将层次拉开,从左到右,从上到下,元素之间互不干扰。...颜色不是决定性因素 物体的颜色会随着光线的变化而变化,颜色是一个变化的性质,不应该在界面上起决定性作用。它可以用于提醒,但是不应该是唯一的区分元素。...界面是被人使用的 只有用户使用你设计的界面,才是成功的。如果一件衣服很漂亮,但是穿起来不舒服,那么设计是失败的。

    88450

    Vue 文档编写指南

    当我们帮助他们持续感到聪明、强大和好奇,他们的认知能力会慢慢消耗殆尽。把事情分解成可消化的部分并注意文档的流动可以帮助它们保持这种状态。 总是试着从用户的角度看问题。...Essentials 可以链接到更高阶的指南和 API,不过,在大多数情况下,你应该避免此类链接。当它们被提供,你还需要提供一个上下文,以便用户知道他们是否应该在第一次阅读遵循这个链接。...他们不应该盲目遵循,但可以帮助团队节省时间,在较小的细节上保持一致。 Cookbook:Cookbook 的秘诀是基于对 Vue 及其生态系统的熟悉程度而编写的。...当引用直接下面的示例,请使用冒号 (:) 结束句子,而不是句点 (.) 使用牛津逗号 (;例如:“a,b,and c”替换“a,b and c”)。!...在可能的情况下,我们应该尝试在页面内创建一个叙述和流程,以尊重读者的认知负荷。 在任何情况下都不应该相邻使用两个警告,这表明我们无法很好地解释上下文。 贡献 我们欣赏小型、集中的 PR。

    66820

    命名在编程的重要性

    async function demo (a, b) { const c = await users(a, b); return [ avg(c.map(a => a.info[0])),...变量a、b和c的命名完全没有信息量。在map内部的lambda函数重复使用了变量a,遮蔽了作为函数参数的a,这使得读者感到困惑,并且在将来修改代码更容易出错,引用了错误的变量。...你不应该创造一个全新的名字,就像你在给宠物或孩子取名一样;你应该寻找你所命名的事物的本质,名字应该基于这个本质自然呈现出来。...同样,如果你使用服务器作为一个术语,你可能不应该选择前端:相反,你可能会想使用客户端,这是一个与服务器更紧密相关的术语。坚持在代码库中使用的约定。...当我在进行代码审查,我会有一个主要的思考:“这个名字清晰吗?”。从那里开始,整个审查演变并结果在清晰的代码。检查一个名字是一个pressure点,可以解开其背后的所有混乱点。

    4810

    AI开启软件2.0

    当我到特斯拉的时候,他们有一堆代码,其中大部分是一个巨大的C++代码库,当然,还有一个卷积神经网络在做一些基本的视觉识别。在过去的一年里,我们基本上一直在将其中的一些代码移植到2.0栈。...如果一辆车在路边,而且它已经有一段时间没有移动了,而且这些车之间可能存在某种模式,那么这辆车就是停着的。”你现在正在设计解决方案,对吧?这不是正确的方法。我认为你不应该相信自己能写出这样的代码。...你可能熟悉的是,当你编写代码,你实际上是在设计算法。你在测量运行时间,你在设计这些算法,你写出这样的伪代码。当你得到一些很酷的东西,你会感到非常聪明。 在软件2.0栈,情况并非如此。...所以突然之间,我需要更多隧道的图像,我需要确保网络知道你不应该在隧道里打开雨刷。现在我需要添加这些图像,我需要在数据集中有足够的图像,并且要注意这个问题。但如果你做得很好,它实际上是可以工作的。...所以现在你需要确保,当一个标记员感到困惑的时候,他们不会只是做一些随机的事情,他们需要能够上报一个功能,上报一些他们感到困惑的图像,你需要在以后解决这个问题,或者你需要标记他们之间的分歧。

    12010

    AI 优先代码编辑器测试:适合中级开发者

    当我最初要求它找到代码的错误时,它找到了缺少的 crate。...当我隔离一部分代码并要求进行编辑,它提出了一些明智的建议,还将解释文本写入了编辑器窗格。...它没有因为 b 只是一个局部变量而感到困惑。 这让我稍微想起了那些你只有在看完电影后才能完全欣赏的电影评论。然而,对于一个中级开发者来说,如果给了一段新代码,这可以很快地使他们适应。...“在聊天中使用‘@’提出关于库的问题”。我从 C 示例中选择了 #include 行并将其添加到聊天,然后要求聊天聊一下它。...目前它还不能完全与“撤消”功能配合使用而且解释文本绝不应该进入编辑器窗格。 然而,未来可能已经来临。当汽车首次出现时,即使启动发动机也需要对燃烧有亲密的了解和一个曲柄手柄。

    10710

    如何修复Vue的 “this is undefined” 问题

    这给新旧Javascript开发人员带来了很多困惑,但是当我们弄懂这个问题,就很好会有这个困惑。 常规函数 常规函数可以用几种不同的方式定义。...在大多数情况下,我们应该在 Vue 中使用常规函数,特别是在创建 methods computed props watched props 虽然常规函数通常是我们所需要的,但是箭头函数也非常方便。...=> number * 2); const reduced = array.reduce((prev, next) => prev + next); 从示例可以看到,大多数情况下,当我们创建匿名函数...等等,我们不是刚发现当我们试图访问 this ,箭头函数不起作用吗? 这就是区别所在。 当我们在常规函数或简写函数中使用箭头函数,常规函数将this设置为我们的Vue组件,而箭头函数则不一样。...当然,可读性相对差点,应该尽量避免太频繁地使用它。

    5K20

    Matplotlib的“plt”和“ax”到底是什么?

    应该在什么时候使用“axes” 为什么有时用“plt”而有时用“ax”? 它们之间有什么区别?...在网上有这么多的例子向人们展示如何使用Matplotlib来绘制这种或那种图表,但我很少看到任何教程提到“为什么”。这可能会使编程经验较少或从其他语言(如R)切换到这种语言的人感到非常困惑。...注意,当我说“plt”,它并不存在于Matplotlib库。...pyplot被大多数人使用当我使用plt(比如plt.line(…))绘制一些东西,我们隐式地创建了一个图形实例和图形对象内部的坐标轴。当我们只想画一个图的时候,这是非常方便的。...当我们想在一个图形上画多个子图,通常需要使用这种方法。 另外,下面是用于Figure和Axes类的Matplotlib官方API引用。

    83130

    关于Objective C编码规范,这些你一定要会

    在方法内的空白应该分离功能,但通常都抽离出来成为一个新方法。 优先使用auto-synthesis。但如果有必要,@synthesize和@dynamic应该在实现每个都声明新的一行。...方法 在方法签名应该在方法类型(-/+ 符号)之后有一个空格。在方法各个段之间应该也有一个空格(符合Apple的风格)。在参数之前应该包含一个具有描述性的关键字来描述参数。...break; } 私有属性 私有属性应该在类的实现文件的类扩展(匿名分类)声明,命名分类(比如RWTPrivate或private)应该从不使用除非是扩展其他类。...x : y; 不应该: result = a > b ? x = c > d ?...任何Xcode分组的创建应该在文件系统的文件体现。代码不仅是根据类型来分组,而且还可以根据功能来分组,这样代码更加清晰。

    43430

    只有 10% 开发人员才可以答对的 JS 面试题,测测你能答对多少

    在调查,大部分受访者回答他们最困难的话题是 Promises,而据统计,Promises 仅排在第 4 位。 我们应该在每项任务旁边留下关于正确答案百分比的注释。...你不应该将此笔记视为恒定的并且 100% 反映现实。 首先,新程序员每天都会回答我们发布的测验并更改统计数据,文章中出现的所有数字都是在文章发表确定的。...创建了两个克隆:一个使用 ...spread 运算符,另一个使用 Object.assign: const clone1 = { ...admin }; const clone2 = Object.assign...两者都使用三个点(…),但这两个运算符不一样。 它们之间的主要区别在于,rest 运算符的目标是在扩展运算符将可迭代对象扩展为单个元素,将其余一些提供的值放入一个数组。...String 为false,而 String(‘Hello’) instanceof String 为true,知道 instanceof 运算符仅适用于对象,不适用于原语,但对 String 函数返回的内容感到困惑

    1K20

    Javascript Prototypes之旅(A Plain English Guide to JavaScript Prototypes译文)

    当我第一次学习Javascript的对象模型,我的反应时困惑。...所以我们不应该在生产环境依赖该属性。我看一看下面的代码片段吧! ? 可以看到通过对象的__proto__属性我们可以简单、方便地设置对象的原型。...'this' is assigned implicitly(隐式分配的this)   当我使用关键字new创建函数实例,Javascript会隐式地创建一个this对象,并在函数的最后返回该this...注意:这个隐式创建的this对象,当且仅当使用关键字new创建函数实例出现,若不使用关键字new就会就会出现不可预知的问题,一般情况下为以首字母大写的方式来命名构造函数,以提示需使用关键字new来调用该函数...__proto__和prototype属性的关系其实很简单,prototype属性所指向的原型会在使用关键字new调用构造函数被复制到隐式创建的this对象的__proto__

    66390

    JavaScript 的 SOLID 原则

    当计算每个形状的面积,我们使用类型字段来区分。...这个原则是指:客户端不应该依赖他们不使用的接口(接口应该是精简的,拥有尽可能少的行为)。 这是什么意思? 这个原则是关于接口的,但是在JavaScript没有接口,不过有类似的东西,那就是类。...这就是**接口隔离原则**所指的:我们不应该在基类创建子类不会使用到的逻辑。 当然,这个和多态没有关系,如果我们创建了一个通用的方法,但是每个子类都会重写这个方法逻辑,是可以的。...我们所有的文件都使用了相同的抽象,而且我们的抽象不依赖于逻辑,抽象即逻辑。 这就是JS“SOLID”的收尾,希望你可以在时间中至少使用到他们的一个。...5、依赖倒置原则(DIP):高级模块不应该依赖低级模块,相反,他们应该依赖抽象类或者接口。也就是不应该在高级模块中使用具体的低级模块,应该遵从依赖于抽象(接口)而不是一个实例(类)。

    42120

    JS箭头函数三连问:为何用、怎么用、何时用

    例如在Vue.js,有一种通用模式,就是使用mapState将Vuex存储的各个部分,直接包含到Vue组件。....mapState({ results: state => state.results, users: state => state.users, }); }} 你不应该使用箭头函数的情景...如果你在以下情形使用箭头函数,那么this的动态绑定不会如期工作,并且你也会困惑这些代码为什么不像预期那样工作,也会给你之后工作的人造成麻烦。...当然你也可以在上面的情形之下谨慎的使用箭头函数。但特别是在jquery和vue的情况下, 这通常会干扰正常功能, 并使您感到困惑:为什么看起来跟别人代码一样的代码就是不工作。...因此我们使用应该仅仅是作为一种工具,而不是无脑的简单的全部替换为箭头函数。

    2.5K20

    React报错之Expected an assignment or function call

    正文从这开始~ 总览 当我们忘记从函数返回值,会产生"Expected an assignment or function call and instead saw an expression"错误...// App.js const App = props => { const result = ['a', 'b', 'c'].map(el => { // ⛔️ Expected an...const App = props => { const result = ['a', 'b', 'c'].map(el => { return el + '100'; // ️ using...需要注意的是,当你从一个嵌套函数返回,你并没有同时从外层函数返回。 隐式返回 另一种方法是使用箭头函数的隐式返回。...但当你用圆括号包裹住大括号,你就有一个隐式的箭头函数返回。 如果你认为eslint规则不应该在你的方案造成错误,你可以通过使用注释来关闭某一行的eslint规则。

    1.5K10
    领券