小编Ami*_*mar的帖子

如何通过C中的函数返回多个值?

我在接受采访时被问到如何从功能中返回多个值.我已经回答说通过使用指针我们可以在C中实现(通过引用调用).然后他告诉我他正在寻找一些返回多个值的方法.我说我们可以返回一个struct对象但是在这里他也似乎没有留下深刻的印象.

我想知道其他方法从函数返回多个值.

我已经在SO上看到了这个问题,但找不到任何特定的C语言.

c

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

如何调试这个C代码

在网站上阅读一些问题时,我遇到了问题需要调试的问题

unsigned int a, b, c;
/* a and b are assume to have some values */
c = (a + b) / 2; // <- There is a bug in this st
What is the bug? and how you debug it?
Run Code Online (Sandbox Code Playgroud)

一些答案说它可能导致溢出(c =(a + b)/ 2).但真的没有得到它如何导致溢出?

c

7
推荐指数
2
解决办法
259
查看次数

在C中,多次声明变量是否有效?

我有下面的C代码,我希望它抛出一个错误,如"多个变量声明",但它没有这样做.

#include <stdio.h>

int i;        
int i;    

int main()
{
    printf("%d",i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

现在的输出是0,但为什么呢?

代码下面还有一件事会给出错误预期

#include <stdio.h>


int main()
{
    int i;        
    int i;    

    printf("%d",i);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

O/p是重新声明我的错误

c

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

这个程序的输出是如何产生的?

我有一段用C编写的代码,其中执行了一些指针算法.我想知道输出是怎么来的?

#include <stdio.h>  
int main()
{
    char arr[] = "gookmforgookm";
    char *ptr1 = arr;
    char *ptr2 = ptr1 + 3;
    printf ("ptr2 - ptr1 = %d\n", ptr2 - ptr1);
    printf ("(int*)ptr2 - (int*) ptr1 = %d",  (int*)ptr2 - (int*)ptr1);
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出如下:

ptr2 - ptr1 = 3  
(int*)ptr2 - (int*) ptr1 = 0
Run Code Online (Sandbox Code Playgroud)

c

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

如何在C中优化这段代码

昨天,在一次访谈中,我被要求测试一个数字中的第5位(测试它是否开启和关闭)以及下面我是如何做到的.

int number = 16;
int mask   = 1<<5;

if ((number & mask) == 0)
    printf("Bit is off");
else
    printf("its on");
Run Code Online (Sandbox Code Playgroud)

但他随后要求我优化这段代码并不使用这个特殊的掩码.

所以我的问题是我在这段代码中可以使用的其他掩码?

c

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

我们所说的指令大小是什么意思?

我真的很困惑,这个问题可能听起来很愚蠢,但是当我们说指令大小是 32 位或 16 位时,我真的不确定这意味着什么。

如果操作数大小是 32 位,那么我们说它是 32 位指令,如果操作数大小是 16 位指令。

或者每条指令都有操作码,如果操作码地址是 32 位,那么我们说指令是 32 位。

我也在浏览 ARM 架构,在那里我读到的所有拇指指令都是 16 位的,但 ARM 模式指令是 32 位的。

指令大小完全取决于所使用的架构还是取决于 CPU 的运行模式?

编辑:

http://www.xgc-tek.com/manuals/m1750-ada/m1750/x524.html

给定的链接表明,16 位指令由 8 位操作码和 4+4 位两个通用寄存器组成。

ARM拇指指令集是怎么回事??

assembly arm machine-code instructions thumb

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

从中断返回(RTI)和从子程序返回(RTS)之间的区别

我想知道从中断返回(RTI)和从子程序返回(RTS)之间的区别.这两者是否相同或两者之间有什么区别?

assembly operating-system

5
推荐指数
1
解决办法
2万
查看次数

联盟可以在 C 中自引用吗?

我在一次采访中被问到“联盟可以自我引用吗?”

我知道struct可以自我参考,但我真的很困惑union。我在一本教科书中读到 union 可以自我引用,但它没有对这个主题进行更多说明。

任何人都可以确认是否union 能够自我引用?

c unions

5
推荐指数
1
解决办法
1851
查看次数

什么是在IPC中使用Socket的优点和缺点

我在最近的一些采访中被问过这个问题,当有其他方法来执行IPC时,在IPC中使用Socket的优点和缺点是什么.没有找到确切的答案.

任何帮助将非常感激.

c sockets

5
推荐指数
1
解决办法
1万
查看次数

从平台设备获取它的名称

我正在阅读围绕总线,设备和驱动程序构建的Linux设备模型.我能够理解设备和驱动程序如何匹配,但不清楚总线在这里的作用,总线如何与设备匹配.

我还有一个疑问,关于平台设备从哪里得到它的名字.

"平台总线只是将每个设备的名称与每个驱动程序的名称进行比较;如果它们相同,则设备与驱动程序匹配."

现在我无法真正理解上述观点.我相信设备名称首先在dts文件中定义,然后相应的驱动程序名称在平台驱动程序代码中定义.

如果这两个名称匹配,则从驱动程序代码调用probe,这将确认设备确实存在.

有没有人能从总线的角度让我知道整个过程.

device-driver linux-device-driver linux-kernel

5
推荐指数
1
解决办法
8151
查看次数