是否可以在C编程语言中取消引用void指针而不使用类型转换?
另外,有没有任何方法可以概括一个可以接收指针并将其存储在void指针中的函数,并且通过使用该void指针,我们可以创建一个通用函数吗?
例如:
void abc(void *a, int b)
{
if(b==1)
printf("%d",*(int*)a); // If integer pointer is received
else if(b==2)
printf("%c",*(char*)a); // If character pointer is received
else if(b==3)
printf("%f",*(float*)a); // If float pointer is received
}
Run Code Online (Sandbox Code Playgroud)
我想在不使用if-else语句的情况下使这个函数变得通用 - 这可能吗?
此外,如果有很好的互联网文章解释了无效指针的概念,那么如果你能提供这些URL会很有用.
是否可以使用void指针进行指针算术?
我有一个问题,我试着一次又一次地思考它......但是没有得到什么,所以在这里发布问题.也许我可以得到一些其他人的观点,试着让它发挥作用......
问题是:我们得到一个SORTED数组,它由一组偶数发生的值组成,除了一个,发生ODD次数.我们需要在log n时间找到解决方案.
在O(n)时间内很容易找到解决方案,但在log n时间执行它看起来相当棘手.
我在理解Boyer Moore字符串搜索算法时遇到了问题.
我正在关注以下文件.链接
我无法确定delta1和delta2的确切含义,以及它们如何应用于查找字符串搜索算法.语言看起来有点模糊..
如果有人可以帮助我理解这一点,那将非常有帮助.
或者,如果您知道任何其他易于理解的链接或文档,请分享.
提前致谢.
我在互联网上发现了以下问题,并想知道我将如何解决它:
你得到一个包含0和1的数组.找到O(n)时间和O(1)空间算法以找到具有相等数量的1和0的最大子序列.
例子:
10101010- 满足问题的最长子序列是输入本身1101000- 满足该问题的最长子序列是110100
找出给定数字的因子可能是最简单和最有效的逻辑.是否存在基于相同的算法.
实际上,我真正的问题是找出答案.对于给定数字存在的因素..
所以任何算法,请告诉我这个..
谢谢.
我被困在一个面试问题中..问题是,
*给定两个数组A和B.A的整数未排序.B与A具有相同的长度,其值在集合{-1,0,1}中
你必须返回一个数组C,在A上进行以下处理.
如果B [i]为0则C [i]必须有A [i]
如果B [i]有-1则A [i]必须在子数组C [0]中的C中 - C [i-1]即.
如果B [i]具有1则左子阵列则A [i]必须在子阵列C [i + 1]中的C中 - C [长度(A)]即右子阵列.如果不存在这样的解决方案那么printf("没有解决方案");*
我应用了以下逻辑: -
int indMinus1 = n-1;
int indPlus1 = 0;
//while(indPlus1 < n && indMinus1 > 0)
while(indPlus1 < indMinus1)
{
while(b[indMinus1] != -1) {
if(b[indMinus1] == 0)
c[indMinus1] = a[indMinus1];
indMinus1--;
}
while(b[indPlus1] != +1) {
if(b[indPlus1] == 0)
c[indPlus1] = a[indPlus1];
indPlus1++;
}
c[indMinus1] = a[indPlus1];
c[indPlus1] = a[indMinus1];
b[indMinus1] = 0;
b[indPlus1] = …Run Code Online (Sandbox Code Playgroud) 我在互联网上发现了以下问题,并想知道我将如何解决它:
问题:没有重新排列的整数分区
输入:非负数的排列S {s 1,... ..,s n }和整数k.
输出:将分区S分成k个或更少的范围,以最小化所有k个或更少范围的总和的最大值,而无需重新排序任何数字.*
请帮忙,看起来像有趣的问题......我实际上花了很多时间,但没有看到任何解决方案..
有一个问题,我也有解决方案.但我无法理解解决方案.请帮助一些例子和淋浴一些经验.
题
如果文件包含大约3亿个社会安全号码(9位数字),请找到一个不在文件中的9位数字.您拥有无限的驱动器空间,但只有2MB的RAM供您使用.
回答
在第一步中,我们构建一个初始化为0的数组2 ^ 16个整数,对于文件中的每个数字,我们将其16个最高有效位索引到此数组并递增数字.
由于文件中的数字少于2 ^ 32,因此数组中必须存在(至少)一个小于2 ^ 16的数字.这告诉我们这些高位中可能的数字中至少缺少一个数字.
在第二遍中,我们只关注与该标准匹配的数字,并使用大小为2 ^ 16的位向量来识别其中一个缺失的数字.
这个问题背后的想法是理解使用联合的更深层次的概念,并以不同的方式使用它以节省记忆.我的问题是 - 我的问题是 -
让我们说有一个结构
struct strt
{
float f;
char c;
int a;
}
Run Code Online (Sandbox Code Playgroud)
并且在结合中表示相同的结构
union unin
{
float f;
char c;
int a;
}
Run Code Online (Sandbox Code Playgroud)
如果我一个接一个地为结构成员分配值然后打印它们,它就会打印出来.但是如果没有发生联盟,一些覆盖工作正在进行中.
所以我需要找到一个方法,它可以存储f,c,a的值使用union,然后我可以打印相同的.(应用任何操作或任何东西..)但我正在寻找这种技术..那里有人可以指导我或给我任何想法吗?