小编Mad*_*ddy的帖子

C面试问题

我刚看到两个面试问题,我无法找到任何令人满意的答案.问题是

  1. 深层可以包含多少级别的文件?
  2. 什么时候不应该使用类型演员?

任何人都可以解释我的答案吗?

提前致谢.

c

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

你在C中注册一个回调函数是什么意思?

任何人都可以通过一些例子在C中注册一个回调函数来告诉我我们究竟是什么意思吗?我在网上搜索了很多,但我得不到满意的答案.甚至在堆栈溢出中搜索,但无法得到完美的想法.

什么是Notify回调和异步回调?

c callback

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

使用双指针作为参数

请找到如下所示的代码段:

#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

c double-pointer

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

连续两次 fwrites 操作

我在写模式下打开了一个文件,如下所示:

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)
  1. 两个连续的 fwrite 操作会不会互相覆盖
  2. 如果没有,两个连续的 fread 操作是否可以正确填充到我的变量中

例如:

fread(&y,1,sizeof(int),fp);
fread(&z,1,sizeof(char),fp);
Run Code Online (Sandbox Code Playgroud)

如果连续 fread 操作完成,y 和 z 变量是否可以保存 10 和 'm' 的值。

c fwrite fread

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

使用的strcpy函数存在疑问

我正在使用两个缓冲区,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*进行类型转换会产生任何问题吗?

如果您需要更多输入,请告诉我.

c string

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

使用递归函数反转打印链表

我刚试了一个程序来反转打印一个单一的链表.

假设链表已准备好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)

c recursion singly-linked-list

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

与递归有关的问题

请找到下面的代码,其中显示了一些基于递归的操作.我希望有人能解释一下这个递归是如何工作的吗?

#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.请有人解释这个展开操作是如何在堆栈中发生的

c recursion

0
推荐指数
1
解决办法
202
查看次数

将 std::array 变量作为参数传递

我需要帮助来解决我面临的问题。

我想要一个函数原型,它在两个实例中接受两种不同类型的参数。

例如如下所示: 我有一个如下所示的结构:

         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)

c c++ std

0
推荐指数
1
解决办法
59
查看次数

如何为二维数组动态分配内存

我最近去过面试,他们让我写了一个程序,为二维数组动态分配内存(i = 3和j = 2)

c dynamic-arrays

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

如果我左移一个带负值的正数,为什么会得到否定结果呢?

你能否告诉我为什么下面的代码给出了一个否定的结果,因为无符号数的左移a有一个负值?

    int main(void)
     {
          unsigned int a=1;
          printf("%d",a<<-1);   

     }
Run Code Online (Sandbox Code Playgroud)

输出 -2147483648.

c binary bit-shift

-2
推荐指数
1
解决办法
222
查看次数