如果C不支持通过引用传递变量,为什么这会起作用?
#include <stdio.h>
void f(int *j) {
(*j)++;
}
int main() {
int i = 20;
int *p = &i;
f(p);
printf("i = %d\n", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
$ gcc -std=c99 test.c
$ a.exe
i = 21
Run Code Online (Sandbox Code Playgroud) 哈希表被认为是存储/检索数据的最快/最好的方式.
我对哈希表的理解,哈希如下(如果我错了请纠正我或者请添加如果还有更多):
我有个问题:
哈希函数是用于存储/检索数据DIFFERENT来自安全应用程序中使用的加密哈希函数,用于身份验证,如MD5,HMAC,SHA-1等......?
它们以什么方式不同?
如果你能提一些好的链接来更好地理解这些,那就太好了.
管道和消息队列之间有什么区别?
请从vxworks和unix的角度解释.
我认为管道是单向的,但消息队列不是.
但是管道内部不使用消息队列,那么管道是如何单向但消息队列不是?
您可以想到的其他差异(从设计或使用或其他方面)?
谁安排调度程序?
这是创建的第一个任务以及如何创建第一个任务?它不需要任何资源或内存吗?不像鸡蛋和鸡蛋的情景?
调度程序不是一项任务吗?是否在每个时间片结束时获取CPU来检查哪个任务需要给CPU?
是否有任何良好的联系使得一个人能够深入思考和理解所有这些概念,而不是泄露出一些需要被遗忘的理论?
bitfield是C概念还是C++?
它只能在结构中使用吗?我们可以使用它们的其他地方是什么?
AFAIK,bitfields是特殊的结构变量,只占用指定的no.比特.它有助于节省内存而不是其他任何东西.我对么?
我编写了一个小程序来理解位域的使用 - 但是,我认为它没有按预期工作.我希望下面结构的大小为1 + 4 + 2 = 7个字节(考虑到unsigned int的大小在我的机器上是4个字节),但令我惊讶的是,结果是12个字节(4 + 4 + 4) ).谁能让我知道为什么?
#include <stdio.h>
struct s{
unsigned int a:1;
unsigned int b;
unsigned int c:2;
};
int main()
{
printf("sizeof struct s = %d bytes \n",sizeof(struct s));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
sizeof struct s = 12 bytes
Run Code Online (Sandbox Code Playgroud) 内存段 - BSS,堆栈,堆,数据,代码/文本(还有吗?).
假设我有128MB RAM,有人可以告诉我:
为每个内存段分配了多少内存?
他们从哪里开始?请详细说明地址范围或类似内容.
哪些因素影响应该从哪里开始?
for()或while() - 哪个最好?
for (i=1; i<a; i++)
/* do something */
Run Code Online (Sandbox Code Playgroud)
要么
i=1;
while (i<a) {
/* do something */
i++;
}
Run Code Online (Sandbox Code Playgroud)