Questions tagged «c»

C是用于操作系统,游戏和其他高性能工作的通用计算机编程语言。

2
为什么C使用星号作为指针?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我现在正在学习C。 我感到奇怪的是,创建者选择星号(*)作为指针的符号,而不是实际上看起来像指针(->)的符号。 考虑到取消引用和函数指针可能会造成混淆,使用星号是否有历史或什至实际的原因?
21 c  history  syntax 

11
低延迟代码有时是否必须“丑陋”?
(这主要是针对那些对低延迟系统有特定知识的人,以避免人们只是用没有根据的意见来回答)。 您是否觉得在编写“好的”面向对象的代码与编写非常快速的低延迟代码之间需要权衡?例如,避免在C ++中使用虚函数/多态性的开销等-重写看上去很讨厌但很快的代码等? 这是有道理的-谁在乎它是否看起来丑陋(只要它可以维护)-如果您需要速度,就需要速度吗? 我很想听听在这些领域工作过的人的来信。
21 java  c++  c  performance  latency 

8
新的高级开发人员任务
我有一位具有八年.NET经验的高级开发人员,明天开始从事11,000行代码的应用程序的工作。在团队中,有我自己和另一个程序员。我们每个人都有大约三年的经验。 这是我作为经理的第一个项目(我也是该项目的开发人员),这是我第一次必须向某人介绍已经建立的代码库。显然,我将遍历每个模块,部署过程等,并将它们交给源代码控制存储库,文档(不是最好的)等位置。 在他们准备开始编写新功能和修复错误之前,我应该给他们多长时间?

6
在C或C ++中执行“空检查”是什么意思?
我一直在学习C ++,并且很难理解null。特别是,我阅读的教程提到进行“空检查”,但是我不确定这意味着什么或为什么有必要。 到底是什么? “检查为空”是什么意思? 我是否总是需要检查null? 任何代码示例将不胜感激。
21 c++  c  null 

9
C与C ++有何不同?
许多人说过C ++是与C完全不同的语言,但是Bjarne本人也曾说过C ++是从C扩展而来的语言,因此才是C的++来源。那么,为什么每个人都在说C和C ++是完全不同的语言呢?除了C ++的扩展功能外,C与C ++有何不同?

2
为什么Java不将文件名放在args中?
在C和C ++中,main方法将文件名保存在数组的第一个位置argv [0]处。但是,在Java中,文件名不包含在args字符串数组中。 是否有实际原因?我知道这使得通过命令行参数从0开始而不是从1开始进行迭代,但这有好处吗?文件名只是被认为是无用的吗?
20 java  c++  c 

1
为什么C库使用同名的宏和函数?
我正在阅读PJ Plauger的“标准C库”,这真的很有趣。该书不仅说明了如何使用该库,而且还说明了其实现方法。 我已经阅读完本ctype.h节,并且在标头中将函数声明为两个宏AND函数。例如 int isdigit(int); 但是也 #define isdigit(c) (_Ctype[(int)(c)] & _DI) 我不明白为什么两者都使用? 另外,如果我尝试重新创建自己的自定义ctype标头和实现,则只有删除宏(注释中的注释),我才能成功编译。 书中并没有真正解释这方面。有人可以解释一下吗?
20 c  naming  functions  macros 

13
为什么操作系统会在C和C ++中做底层工作?为什么不只是C ++?
在Windows的Wikipedia页面上,它指出Windows是用Assembly语言编写的,用于引导加载程序和任务切换器,以及C 和 C ++语言的内核例程。 IIRC,您可以从extern "C"'d块调用C ++函数。我可以将C用于内核函数,这样纯C应用程序就可以使用它们(诸如此类printf),但是如果它们只能包装在一个extern "C "块中,那么为什么要用C语言编写代码?

2
嵌入式C开发人员的良好单元测试示例
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 6年前关闭。 下周,我将与我的部门进行有关单元测试和测试驱动开发的演讲。作为其中的一部分,我将展示一些我最近编写的代码中的真实示例,但我也想展示一些我将在演讲中编写的非常简单的示例。 我一直在网上寻找良好的例子,但一直在努力寻找任何特别适合我们开发领域的例子。我们编写的几乎所有软件都是在小型微控制器上运行的深层控制系统。只要您远离“底层”层,就有很多C代码很容易适用于单元测试(我将在PC上而不是在目标本身上谈论单元测试):直接对话的东西到微控制器外设。但是,我发现的大多数示例都倾向于基于字符串处理(例如出色的Dive Into Python罗马数字示例),并且由于我们几乎从未使用过字符串,因此这实际上并不适合(关于我们的代码通常使用的唯一库函数)是memcpy,memcmp和memset,strcat 或正则表达式不太正确)。 那么,问题就来了:请问有人可以提供一些很好的功能示例,这些功能可以用来在实时会话中演示单元测试吗?在我的观点(可能会发生变化)中,一个好的答案可能是: 一个足够简单的功能,任何人(甚至只是偶尔写代码的人)都可以理解; 看起来没有意义的函数(即计算奇偶校验或CRC可能比将两个数字相乘并添加随机常数的函数更好); 一个足够短的函数,可以在一个人的房间里书写(我可能会利用Vim的许多剪贴板来减少错误……); 该函数以数字,数组,指针或结构为参数,并返回相似的内容,而不是处理字符串。 具有简单错误(例如>而不是>=)的函数易于插入,在大多数情况下仍然可以使用,但在某些特殊情况下会中断:易于通过单元测试进行识别和修复。 有什么想法吗? 尽管可能无关紧要,但是测试本身可能会使用Google Test Framework以C ++编写:我们所有的标头都已经包含了#ifdef __cplusplus extern "C" {包装器;到目前为止,这与我已经完成的测试效果很好。

10
指针/递归有什么困难?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 在Java学校的危险中, Joel讨论了他在Penn的经历以及“分段错误”的难度。他说 [在您之前,段错误是很难的]“深呼吸,真正尝试迫使您的思想同时在两个不同的抽象级别上工作。” 给出了导致段错误的常见原因的清单,我不明白我们必须如何在2个抽象级别上工作。 由于某种原因,Joel认为这些概念是程序员抽象能力的核心。我不想承担太多。那么,指针/递归到底有什么困难呢?例子会很好。
20 c  pointers  recursion 

2
谁能解释浮点数在内存中的表示?
当我阅读上一个问题时,这不是重复的问题。 谁能帮助我理解how float values are stored in the memory。 我的疑问是浮点值包含' .'(for example 3.45)'.'在内存中将如何表示? 有人可以用图表说明我吗?

1
所有大写常量的命名历史是什么?
用大写字母命名常量的惯例背后的历史是什么? 我的直觉是从C预处理程序开始的,在C预处理程序中,人们开发了一种做法,以所有大写形式命名预处理程序宏,以便它们可以有效地存在于单独的命名空间中,并避免名称冲突。我的信念是,这种做法后来被误解并混为一谈,也适用于非预处理程序常量(enums,const变量)。 在所有大写字母中命名预处理器宏对我来说确实有用。用这种方式命名通用常量不是那么多(如果它与宏名称产生冲突,则会适得其反)。 我在基地外吗?大写常量的惯例是否早于C?

4
为什么我们必须提到C中变量的数据类型
通常在C语言中,我们必须在变量声明中告诉计算机数据的类型。例如,在下面的程序中,我要打印两个浮点数X和Y的总和。 #include<stdio.h> main() { float X=5.2; float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } 我不得不告诉编译器变量X的类型。 编译器不能自行确定其类型X吗? 是的,我可以这样做: #define X 5.2 现在,我可以编写程序而无需告诉编译器Xas 的类型: #include<stdio.h> #define X 5.2 main() { float Y=5.1; float Z; Z=Y+X; printf("%f",Z); } 因此,我们看到C语言具有某种功能,通过它可以自行确定数据类型。就我而言,它确定X为float类型。 在main()中声明某些内容时,为什么还要提及数据类型?为何编译器无法main()像in中那样自行确定变量的数据类型#define。

4
修复内存泄漏有多重要?
我通过Valgring发现某些GTK +程序会泄漏内存。修复这些泄漏有多重要?我的意思是,这些程序通常运行良好,但另一方面,人们永远无法确定是否要将部分泄漏的代码复制到其他程序中。而且我不确定GTK +程序的构想是否可以快速运行,是否存在泄漏。 因此,如果有时在开放源代码程序中发现内存泄漏,是否应该修复它或存在效率问题,因此程序员的初衷是编写一些小的泄漏代码?
19 c  memory 

7
模块化编程会影响计算时间吗?
每个人都说我应该使代码模块化,但是如果我使用更多的方法调用而不是更少但更大的方法,效率会降低吗?Java,C或C ++有什么区别? 我知道编辑,阅读和理解起来更容易,尤其是在小组中。那么,与代码整理优势相比,计算时间损失微不足道吗?
19 java  c++  c  efficiency 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.