Questions tagged «c»

C是用于系统编程(OS和嵌入式),库,游戏和跨平台的通用编程语言。该标记应与ISO 9899标准(除非另有说明,最新版本9899:2018中定义的有关C语言的一般问题)一起使用-还要使用c89,c99,c11等标记特定于版本的请求。C与C ++截然不同,在没有合理理由的情况下,不应将其与C ++标记结合使用。

1
权威的C书指南和清单
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 这个问题试图在社区中收集由社区维护的优质图书清单。C 针对各种技能水平的编程语言。 C是一种复杂的编程语言,很难通过阅读在线教程来随时掌握。全面的书籍通常是学习语言的最佳方法,而寻找一本好书则是第一步。避免写得不好的书是很重要的,更重要的是要避免包含严重技术错误的书。 请提出对已接受答案的修改建议,以添加高质量的书,并附上大致的技能水平,并简要介绍每本书。(请注意,该问题已锁定,因此不会接受新的答案。列表中仅保留一个答案) 随意讨论书籍的选择,质量,标题,摘要,技能水平以及您发现不对的任何其他内容。在这里,C社区认为令人满意的书籍将继续出现在清单上;其余的将定期删除。 对于具有C和C ++用户协会(ACCU)的评论的书籍,应在这些书籍的旁边添加指向这些评论的链接。 也可以看看: 其他与C相关的资源 C 标签维基 类似的清单 C ++:权威的C ++书籍指南和清单 该问题已在Meta上进行了讨论,作为2018年已删除问题审核的一部分。共识是不删除它并积极维护它。
400 c 

25
为什么不将alloca()用作良好实践?
alloca()在的情况下,在栈而不是堆上分配内存malloc()。因此,当我从例程返回时,内存被释放。因此,实际上这解决了我释放动态分配的内存的问题。释放通过分配的内存malloc()是一个头疼的大问题,如果以某种方式错过,则会导致各种内存问题。 alloca()尽管有上述功能,为什么不鼓励使用?
400 c  stack  malloc  allocation  alloca 

16
静态链接与动态链接
在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或阅读了以下内容,但是我对这个主题的了解不足,无法保证其准确性。 1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计。 2)(1)如果使用使用概要文件数据来优化程序热路径的性能分析编译器,则不正确,因为使用静态链接,编译器可以同时优化您的代码和库代码。使用动态链接只能优化您的代码。如果大部分时间都花在运行库代码上,那将有很大的不同。否则,(1)仍然适用。

12
在哪里可以找到最新的C或C ++标准文档?
这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 Наэтотвопросестьответына 堆栈溢出нарусском:ГдевзятьстандартC ++? 对于许多问题,答案似乎可以在“标准”中找到。但是,我们在哪里找到呢?最好在线。 有时,谷歌搜索有时会徒劳无功,特别是对于C标准,因为它们淹没在编程论坛上的讨论中。 首先,由于这些是我现在正在搜索的内容,因此在哪里有不错的在线资源: C89 C99 C11 C ++ 98 C ++ 03 C ++ 11 C ++ 14 C ++ 17
394 c++  c  standards  c++-faq 

11
比较浮点值有多危险?
我知道UIKit使用CGFloat是因为分辨率独立的坐标系。 但每次我要检查是否例如frame.origin.x被0这让我感到恶心: if (theView.frame.origin.x == 0) { // do important operation } 是不是CGFloat容易误报比较时==,<=,>=,<,>?这是一个浮点,它们存在不精确的问题:0.0000000000041例如。 Objective-C比较时是否在内部处理此问题,还是会发生origin.x读为零的a与未读0为true的情况?

6
确定整数是否在具有已知值集的两个整数(包括两个整数)之间的最快方法
有没有比x >= start && x <= endC或C ++ 更快的方法来测试整数是否在两个整数之间? 更新:我的特定平台是iOS。这是框模糊功能的一部分,该功能将像素限制为给定正方形中的圆形。 更新:尝试了可接受的答案后,我在一行代码上以正常x >= start && x <= end方式完成了一个数量级的加速。 更新:这是来自XCode的汇编程序的前后代码: 新方法 // diff = (end - start) + 1 #define POINT_IN_RANGE_AND_INCREMENT(p, range) ((p++ - range.start) < range.diff) Ltmp1313: ldr r0, [sp, #176] @ 4-byte Reload ldr r1, [sp, #164] @ 4-byte Reload …
389 c++  c  performance  math 

10
为什么没有参数的函数(与实际函数定义相比)会编译?
我刚刚遇到了某人的C代码,但对于为什么编译它感到困惑。我不明白两点。 首先,函数原型与实际函数定义相比没有参数。其次,函数定义中的参数没有类型。 #include <stdio.h> int func(); int func(param) { return param; } int main() { int bla = func(10); printf("%d", bla); } 为什么这样做?我已经在几个编译器中对其进行了测试,并且工作正常。

9
这四行棘手的C代码背后的概念
为什么此代码给出输出C++Sucks?它背后的概念是什么? #include <stdio.h> double m[] = {7709179928849219.0, 771}; int main() { m[1]--?m[0]*=2,main():printf((char*)m); } 在这里测试。
384 c  deobfuscation 

11
免费如何知道要多少钱?
在C编程中,您可以将任意类型的指针作为参数传递给free,它如何知道要释放的内存的大小?每当我将指针传递给某个函数时,我都还必须传递大小(即,包含10个元素的数组需要接收10个参数作为参数来知道数组的大小),但是不必将大小传递给自由功能。为什么不这样做呢?我可以在自己的函数中使用相同的技术来使我免于需要购买数组长度的额外变量的麻烦吗?
384 c  size  pointers  free 





14
在Linux中对pthread_create的未定义引用
我从https://computing.llnl.gov/tutorials/pthreads/在网络上获取了以下演示 #include <pthread.h> #include <stdio.h> #define NUM_THREADS 5 void *PrintHello(void *threadid) { long tid; tid = (long)threadid; printf("Hello World! It's me, thread #%ld!\n", tid); pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t threads[NUM_THREADS]; int rc; long t; for(t=0; t<NUM_THREADS; t++){ printf("In main: creating thread %ld\n", t); rc = …

7
在2D数组上进行迭代时,为什么循环顺序会影响性能?
下面是两个几乎完全相同的程序,除了我切换了i和j变量。它们都以不同的时间运行。有人可以解释为什么会这样吗? 版本1 #include <stdio.h> #include <stdlib.h> main () { int i,j; static int x[4000][4000]; for (i = 0; i < 4000; i++) { for (j = 0; j < 4000; j++) { x[j][i] = i + j; } } } 版本2 #include <stdio.h> #include <stdlib.h> main () { int i,j; …

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.