小编Ami*_*mar的帖子

什么是c_str函数的用法在c ++中

我刚开始阅读C++并发现c ++具有丰富的字符串操作功能,C没有.我正在阅读这些函数,c_str()并且从我所理解的是c_str转换了一个字符串,该字符串可能为空终止或者可能不是以空终止的字符串.这是真的吗?

任何人都可以建议我一些例子,以便我可以理解使用c_str函数??

c c++ string

58
推荐指数
6
解决办法
15万
查看次数

如何用C表示内存中的FLOAT编号

在阅读教程时,我遇到了如何在内存中表示浮点数.本教程有一个带浮点数的例子.

   float a=5.2  with below Diagram
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

任何人都可以告诉我5.2如何转换为二进制文件以及它如何在上图中的内存中表示?

c floating-point

39
推荐指数
4
解决办法
7万
查看次数

我们如何使用One malloc语句分配二维数组

在接受采访时我被问到如何分配二维阵列,以下是我的解决方案.

#include <stdlib.h>

int **array;
array = malloc(nrows * sizeof(int *));

for(i = 0; i < nrows; i++)
{
    array[i] = malloc(ncolumns * sizeof(int));
    if(array[i] == NULL)
    {
        fprintf(stderr, "out of memory\n");
        exit or return
    }
}
Run Code Online (Sandbox Code Playgroud)

我以为我做得很好,但后来他让我用一句malloc()不是两句话来做.我不知道如何实现它.

任何人都可以建议我单独做一些想法malloc()吗?

c

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

我如何在C中阅读这个复杂的声明?

可能重复:
这段代码的含义是什么?void(*signal(int sig,void(*func)(int)))(int);

我有一个复杂的声明,它取自"signal.h"头文件,下面是声明.

  void (*signal(int sig, void (*func)(int)))(int);
Run Code Online (Sandbox Code Playgroud)

现在,我该如何解析它?如

signal是带有两个参数'sig'的int类型和'func'的函数,它是一个指向函数的指针,该函数将int作为参数并返回void类型; 它返回一个指向函数的指针,该函数将int作为参数并返回void.

可以,或者信号是指向功能的指针吗?

c

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

递归如何在C中起作用

我是C的新手,我正在阅读有关递归的内容,但我完全感到困惑.

我感到困惑的主要部分是当达到退出条件时,事情是如何放松的.我想知道在递归值中如何从堆栈推送和弹出.

也有人可以给我一个递归的图解视图吗?

谢谢...

c recursion

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

如何在C中检查内存地址是否为32位对齐

我的问题有两个部分.

首先,作为这个地址空间的新手,我想知道地址的内存对齐是什么意思.我用Google搜索了一下,但也想在这里提出这个问题,因为我发现这里的答案非常有用.

我的问题的第二部分与对齐和编程有关:如何找到一个地址是否是4字节对齐?在某处我读到:

  if(address & 0x3) // for 32 bit register 
Run Code Online (Sandbox Code Playgroud)

但我真的不知道这是如何检查4字节对齐的.任何人都可以详细解释一下吗?

编辑:如果有人可以在这个主题上绘制图片,那就太棒了.

谢谢

c memory memory-management linux-kernel

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

虚拟内存是无限的?

我在接受采访时被问到虚拟内存是无限的吗?我回答说这不是无限的.然后面试官问了解释,我建议的是,在Windows中,我们确实有一种手动方式将虚拟内存配置到一定限度.

我想知道虚拟内存是否真的无限?

memory

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

这个C代码有什么问题

我有一段代码,我试图返回指向的值的平方*ptr.

int square(volatile int *ptr)
{
  int a,b;
  a = *ptr;
  b = *ptr;
  return a * b;
}

  main()
  {
    int a=8,t;
    t=square(&a);
    printf("%d",t);
  }
Run Code Online (Sandbox Code Playgroud)

它对我来说很好,但是这段代码的作者说它可能因为以下原因而无法工作:
因为它可能*ptr会意外地改变,a和b有可能不同.因此,此代码可能返回一个不是正方形的数字!正确的方法是

long square(volatile int *ptr)
{
  int a;
  a = *ptr;
  return a * a;
}
Run Code Online (Sandbox Code Playgroud)

我真的很想知道他为什么这样说?

c volatile

12
推荐指数
3
解决办法
2204
查看次数

如何在不使用指针的情况下传递数组函数

在接受采访时我被问到如何在不使用任何指针的情况下将数组传递给函数但是它似乎是不可能的或有办法做到这一点?

c

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

如何使用C从Linux中的串口读取数据?

我是使用C在Linux中进行串行编程的新手.我已经找到了一小段代码来在串口上写入数据,我在这里分享.运行此代码后,我可能会认为数据已写入特定端口.现在我想打开另一个终端并使用单独的代码想要读取写在该特定端口上的数据 - 我该怎么做?

#include <stdio.h>   /* Standard input/output definitions */
#include <string.h>  /* String function definitions */
#include <unistd.h>  /* UNIX standard function definitions */
#include <fcntl.h>   /* File control definitions */
#include <errno.h>   /* Error number definitions */
#include <termios.h> /* POSIX terminal control definitions */

/*
 * 'open_port()' - Open serial port 1.
 *
 * Returns the file descriptor on success or -1 on error.
 */
int
open_port(void)
{
  int fd; /* File descriptor for the port */ …
Run Code Online (Sandbox Code Playgroud)

c linux serial-port

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