我刚看到两个面试问题,我无法找到任何令人满意的答案.问题是
任何人都可以解释我的答案吗?
提前致谢.
任何人都可以通过一些例子在C中注册一个回调函数来告诉我我们究竟是什么意思吗?我在网上搜索了很多,但我得不到满意的答案.甚至在堆栈溢出中搜索,但无法得到完美的想法.
什么是Notify回调和异步回调?
请找到如下所示的代码段:
#include <stdio.h>
int My_func(int **);
int main()
{
int a =5;
int *p = &a;
My_Func(&p);
printf("The val of *p is %d\n,*p);
}
void My_Func(int **p)
{
int val = 100;
int *Ptr = &val;
*p = Ptr;
}
Run Code Online (Sandbox Code Playgroud)
如何通过在my_Func函数中使用双指针作为参数并使值的更改在main函数中反映相同但如果我们使用单个指针My_Func并不改变main中的值?请尽可能用示例解释我
高级感谢
Maddy
我在写模式下打开了一个文件,如下所示:
int a = 10;
char b = 'm';
int y = 0;
char z;
FILE *fp = NULL;
fp = fopen("/config/gps_backup.dat","w");
Run Code Online (Sandbox Code Playgroud)
我正在对文件执行两个变量的 frwite(第一个是整数,第二个是字符),如下所示:
fwrite(&a,1,sizeof(int),fp);
fwrite(&b,1,sizeof(char),fp);
Run Code Online (Sandbox Code Playgroud)
例如:
fread(&y,1,sizeof(int),fp);
fread(&z,1,sizeof(char),fp);
Run Code Online (Sandbox Code Playgroud)
如果连续 fread 操作完成,y 和 z 变量是否可以保存 10 和 'm' 的值。
塔
我正在使用两个缓冲区,unsigned char当我使用该函数时strcpy,有一个编译错误,上面写着"将unsigned char*无效转换为char*".任何人都可以告诉我,无符号缓冲区与带符号缓冲区对输出有什么区别?这是我试过的程序.
main()
{
unsigned char buff[20] = "Michael";
unsigned char dst[20] = "Jackson";
strcpy(buff,dst);
printf("The string is %s\n",buff);
}
Run Code Online (Sandbox Code Playgroud)
现在,当我将strcpy中传递的参数类型转换为(char*)时,此程序工作正常,如下所示
main()
{
unsigned char buff[20] = "Michael";
unsigned char dst[20] = "Jackson";
strcpy((char *)buff,(char *)dst);
printf("The string is %s\n",buff);
}
Run Code Online (Sandbox Code Playgroud)
第二个问题:在字符串函数中对char*进行类型转换会产生任何问题吗?
如果您需要更多输入,请告诉我.
我刚试了一个程序来反转打印一个单一的链表.
假设链表已准备好5个元素:
1->2->3->4->5
我编写了一个程序,以相反的顺序打印,如:5 4 3 2 1
但我的程序打印为5 4 3 2; 在1不打印.为什么?
int Reverse_List(abc_t *pNode) {
abc_t *pTemp;
int count = 5;
if (pNode->pNext != NULL) {
pNode = pNode->pNext;
Reverse_List(pNode);
printf("The node is %d\n", pNode->a);
}
}
Run Code Online (Sandbox Code Playgroud) 请找到下面的代码,其中显示了一些基于递归的操作.我希望有人能解释一下这个递归是如何工作的吗?
#include <stdio.h>
int func(int);
main()
{
int ret = 0;
ret = func(6);
printf("The val is %d\n",ret);
}
int func(int m)
{
if((m==0)||(m==1))
{
return 1;
}
else
{
return (func(m-1)+func(m-2));
}
}
Run Code Online (Sandbox Code Playgroud)
执行时,val的值为13.请有人解释这个展开操作是如何在堆栈中发生的
我需要帮助来解决我面临的问题。
我想要一个函数原型,它在两个实例中接受两种不同类型的参数。
例如如下所示: 我有一个如下所示的结构:
typedef struct BufferStruct
{
unsigned long BufferType;
unsigned long TheAddress;
} Buffer;
Run Code Online (Sandbox Code Playgroud)
我有一个名为 Test 的函数,这个函数应该接受两种不同类型的参数
1) std::array<Buffer, 2> axBuffer;
2) Buffer axBuffer;
void Test(??)/* function argument ?*/
These are C functions and not C++.
Can someone please help me in getting the appropriate function prototype for the function named "Test"?
Advanced thanks.
Run Code Online (Sandbox Code Playgroud) 你能否告诉我为什么下面的代码给出了一个否定的结果,因为无符号数的左移a有一个负值?
int main(void)
{
unsigned int a=1;
printf("%d",a<<-1);
}
Run Code Online (Sandbox Code Playgroud)
输出 -2147483648.