小编aks*_*aks的帖子

通过C中的引用传递

如果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)

c pointers pass-by-reference

200
推荐指数
11
解决办法
34万
查看次数

45
推荐指数
4
解决办法
2万
查看次数

如何在C中编写哈希函数?

哈希表被认为是存储/检索数据的最快/最好的方式.

我对哈希表的理解,哈希如下(如果我错了请纠正我或者请添加如果还有更多):

  • 哈希表只不过是一个数组(单个或多维的)来存储值.
  • 散列是在数组中查找索引/位置以插入/检索数据的过程.您获取一个数据项并将其作为键传递给哈希函数,您将获得索引/位置插入/检索数据的位置.

我有个问题:

哈希函数是用于存储/检索数据DIFFERENT来自安全应用程序中使用的加密哈希函数,用于身份验证,如MD5,HMAC,SHA-1等......?

它们以什么方式不同?

  • 如何在C中编写哈希函数?
  • 它有一些标准或指导方针吗?
  • 我们如何确保哈希函数的输出,即索引不超出范围?

如果你能提一些好的链接来更好地理解这些,那就太好了.

c hash hash-function hashtable

27
推荐指数
2
解决办法
3万
查看次数

管道和消息队列之间有什么区别?

管道和消息队列之间有什么区别?

请从vxworks和unix的角度解释.

我认为管道是单向的,但消息队列不是.

但是管道内部不使用消息队列,那么管道是如何单向但消息队列不是?

您可以想到的其他差异(从设计或使用或其他方面)?

unix ipc pipe vxworks message-queue

13
推荐指数
2
解决办法
3万
查看次数

12
推荐指数
2
解决办法
4102
查看次数

谁在OS中安排调度程序 - 这不是一个鸡蛋和鸡蛋的场景吗?

谁安排调度程序?

这是创建的第一个任务以及如何创建第一个任务?它不需要任何资源或内存吗?不像鸡蛋和鸡蛋的情景?

调度程序不是一项任务吗?是否在每个时间片结束时获取CPU来检查哪个任务需要给CPU?

是否有任何良好的联系使得一个人能够深入思考和理解所有这些概念,而不是泄露出一些需要被遗忘的理论?

operating-system scheduling rtos scheduler

12
推荐指数
1
解决办法
3366
查看次数

关于C位域的问题

  • 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)

c bit-fields

8
推荐指数
2
解决办法
1296
查看次数

BSS,堆栈,堆,数据,代码/文本 - 其中每个都在内存中开始?

内存段 - BSS,堆栈,堆,数据,代码/文本(还有吗?).

假设我有128MB RAM,有人可以告诉我:

  • 为每个内存段分配了多少内存?

  • 他们从哪里开始?请详细说明地址范围或类似内容.

  • 哪些因素影响应该从哪里开始?

memory memory-management

7
推荐指数
1
解决办法
8957
查看次数

C中的循环 - ()或while() - 哪个最好?

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)

c for-loop while-loop

6
推荐指数
1
解决办法
4328
查看次数

堆栈大小可以动态更改 - 如何?

堆栈大小可以在 C 中动态更改吗?

如果是,如何?

c stack

6
推荐指数
2
解决办法
3015
查看次数