在我的公司中,有一个编码规则,在释放任何内存后,将变量重置为NULL.例如 ...
void some_func ()
{
int *nPtr;
nPtr = malloc (100);
free (nPtr);
nPtr = NULL;
return;
}
Run Code Online (Sandbox Code Playgroud)
我觉得,在上面显示的代码中,设置为NULL没有任何意义.或者我错过了什么?
如果在这种情况下没有任何意义,我将采用"质量团队"来删除此编码规则.请指教.
int main()
{
i/*nt*/a = 10;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我有上面的代码并且我想计算令牌,它是14个令牌还是13个令牌?
在变量名中写注释是否有效?您可以假设int i, int a,int ia是全局定义的。
从我所做的阅读中,Core Audio在很大程度上依赖于回调(和C++,但这是另一个故事).
我理解设置一个函数的概念(类型),该函数由另一个函数重复调用以完成任务.我只是不明白他们是如何设置以及他们如何工作的.任何例子将不胜感激.
在"C的完整参考"一书中,提到char默认情况下是无符号的.
但我试图用GCC和Visual Studio验证这一点.它默认签名.
哪一个是正确的?
代码
float x = 3.141592653589793238;
double z = 3.141592653589793238;
printf("x=%f\n", x);
printf("z=%f\n", z);
printf("x=%20.18f\n", x);
printf("z=%20.18f\n", z);
Run Code Online (Sandbox Code Playgroud)
会给你输出
x=3.141593
z=3.141593
x=3.141592741012573242
z=3.141592653589793116
Run Code Online (Sandbox Code Playgroud)
输出的第三行741012573242是垃圾,第四行116是垃圾.双打总是有16个有效数字,而浮点数总是有7个有效数字吗?为什么双打没有14位重要人物?
日常机器(不是电器,数字手表等电脑和移动设备)是如何编程的?什么样的代码可用于可口可乐自动售货机的编程?我的咖啡机如何接受预先设定的时间并在几小时后开始冲泡一壶咖啡?
这些机器内部是否有操作系统,还是更基本的东西?它们是用Assembly,C还是其他语言编写的?
而且,我真的想找到一些列出这些操作系统或底层代码系统的资源,如果可能的话,甚至可能使用源代码.如果有人知道这样的资源(搜索没有给我任何东西),那就太棒了.
我不是在讨论指向const值的指针,而是指向const指针本身.
我正在学习C和C++,超越了基本的东西,直到今天我才意识到指针是通过值传递给函数的,这是有道理的.这意味着在函数内部,我可以使复制的指针指向其他值,而不会影响来自调用者的原始指针.
那么有一个函数头是什么意思:
void foo(int* const ptr);
Run Code Online (Sandbox Code Playgroud)
在这样的函数里面你不能让ptr指向别的东西因为它是const并且你不希望它被修改,但是这样的函数:
void foo(int* ptr);
Run Code Online (Sandbox Code Playgroud)
工作也一样好!因为无论如何都会复制指针,即使您修改了副本,调用者中的指针也不会受到影响.那么const的优势是什么?
我正在尝试为Linux动态库(.so文件)创建一个hello world项目.所以我有一个文件hello.c:
#include <stdio.h>
void hello()
{
printf("Hello world!\n");
}
Run Code Online (Sandbox Code Playgroud)
如何hello()使用命令行中的gcc 创建导出的.so文件?
我在终端上使用了gcc命令来编译C程序但突然间,在我的Mac操作系统更新后(到macOS 10.14 Mojave和XCode 10.0),我开始收到消息:
test.c:8:10: fatal error: stdio.h: No such file or directory
#include <stdio.h>
^~~~~~~~~
compilation terminated.
Run Code Online (Sandbox Code Playgroud)
我已经安装了gcc,因为我可以找到它/usr/local/bin并且那里确实有一个gcc.我尝试在我的其他iMac上运行相同的文件,它没有任何问题.
我试过运行xcode-select --install它已经安装好了,因此它没有解决我现在遇到的问题.我猜测路径搞砸了,因为gcc在我开始复制并粘贴其他资源中的一些命令来解决此问题后,它似乎无法找到.
希望对此有所帮助.
我一直在查看Boost库的源代码,我注意到通常只有单个符号没有附加任何预处理器指令.我阅读了GCC预处理器手册和规范指南,但没有找到任何相关信息.
(1) #ifndef BOOST_CONFIG_HPP
(2) # include <boost/config.hpp>
(3) #endif
(4) #
(5) #if defined(BOOST_HAS_PRAGMA_ONCE)
(6) # pragma once
(7) #endif
Run Code Online (Sandbox Code Playgroud)
在第4行,英镑符号后没有任何内容.这有什么影响?它是在C预处理器(CPP)规范中定义的吗?
由于Boost是一个跨平台的库,我认为任何CPP都应该正确解析它.在整个代码中使用随机井号/井号的影响/副作用是什么?