相关疑难解决方法(0)

C++ 数组和指针的 sizeof 结果

在 x86_64 架构上,一个指针是 8 个字节。对我来说sizeof(x)应该返回 8是有意义的。我知道 achar是单个字节,而 5 个字节是 array 的大小z。为什么sizeof(z)不返回8背后的直觉是什么?

int* x = new int[10];
char z[5];

// Returns 8
std::cout << "This is the size of x: " << sizeof(x) << std::endl;

// Returns 5
std::cout << "This is the size of z: " << sizeof(z) << std::endl;
Run Code Online (Sandbox Code Playgroud)

c++ pointers internal-representation abstract-machine

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

C:sizeof()相关的疑惑?

#include <stdio.h>
#include <string.h>

main()
{    
   printf("%d \n ",sizeof(' '));
   printf("%d ",sizeof(""));
}
Run Code Online (Sandbox Code Playgroud)

输出:

4
1
Run Code Online (Sandbox Code Playgroud)

为什么o/p为第一个printf而来4,而且如果我给它''它显示错误为错误:空字符常量但是双引号空白即没有任何空格是没有错误没有错误?

c sizeof

6
推荐指数
3
解决办法
231
查看次数

C/C++ sizeof运算符:为什么sizeof('a')返回不同的值?

可能重复:
C/C++中的字符大小('a')

我是C的初学者,对此感到困惑.

C: 我尝试使用"%zu"修饰符在C中打印sizeof('a'),然后输出值4.

C++: 使用cout在C++中打印sizeof('a'),printf(使用上面的格式)都打印了值1.

我认为正确的值应该是1,因为'a'将被视为char.为什么不在C中返回4?这两种语言的操作规模是否都不同?如果是这样,有什么区别,为什么它会返回不同的值?我在两种情况下都使用了gcc编译器.

c c++ memory

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

为什么sizeof('3')== 4使用GCC编译器?

为什么以下程序4的输出?

#include <stdio.h>

int main()
{
    printf("%d\n", sizeof('3'));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c gcc sizeof char

4
推荐指数
2
解决办法
662
查看次数

sizeof()后面的逻辑用于字符常量和函数名称

C中,以下代码:

#include<stdio.h>
int main()
{
   char c='a';
   printf("%d %d",sizeof(c),sizeof('a'));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

产生结果14?请解释逻辑?

另外,为什么会sizeof(main())导致4sizeof(main)导致1:

#include<stdio.h>

int main()
{

   printf("%d %d\n",sizeof(main), sizeof(main()));
   return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++中为什么会sizeof('a')导致1而sizeof('av')导致4?

c c++ sizeof

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

为什么C中字符文字的大小与C++中的大小不同

我知道C和C++中的每个文字都会获得特定的类型信息.我在C中编写了这个小程序,并在Visual Studio 2012中对其进行了编译.源文件名为'main.c'.

#include <stdio.h>
int main()
{
    printf("sizeof(char) = %d\n",sizeof(char));
    printf("sizeof('i') = %d",sizeof('i'));
    getchar();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

sizeof(char) = 1
sizeof('i') = 4
Run Code Online (Sandbox Code Playgroud)

我想知道角色的大小不是1字节.我将源文件重命名为'main.cpp',现在sizeof('a')返回1,如前所述.所以必须有语言特定的差异.为什么C 4字节中的字符大小而不是1?

c c++ sizeof

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

指针与空字符合法比较?

比较指向'\0'合法的指针?

关于clang ++的主干版本(25836be2c)

const char *a = "foo";

if(a == '\0')
Run Code Online (Sandbox Code Playgroud)

给出一个错误:指针和整数之间的比较('const char*'和'int')

if(a == 0)
Run Code Online (Sandbox Code Playgroud)

没有按预期给出任何错误.

用于与指针进行比较的空指针是否等效于空指针?这是编译器错误吗?

另一点是,此错误未显示"-std = c ++ 03"标志,但显示"-std = c ++ 11"标志.但是,当我使用g ++(v4.8.5)时,我没有在这两个标准中得到错误

c++

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

sizeof('a')vs size('aa')

我曾尝试通过谷歌和这样的研究,但我只能找到结果sizeof('a')它的类型int,因此应该给我4个字节,但是当我运行此我得到1个字节(我想可能是因为我的链接是一个参考对于C而不是C++).然而,这里有趣的是,当我键入时,sizeof('aa')我得到4个字节.而且aa(例如aaaaaaa)之后的任何字符仍然给我4个字节.为什么随着更多字符的增加,3个字节突然增加并保持不变?另外为什么sizeof(int)在这里给我1个字节?

谢谢!

c++ int byte sizeof char

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

C:解释行为的大小

可能重复:
C/C++中的字符大小('a')

有人可以解释为什么在C sizeof(char)= 1和sizeof(name[0])= 1但sizeof('a')= 4?

name[0] 在这种情况下将是 char name[1] = {'a'};

我试过通过C的文档阅读以获得这个,但我根本就没有得到它!如果sizeof('a')sizeof(name[0])都是4,我会得到它,如果他们都是1,这将使感......但我不明白的差异!

c sizeof

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

sizeof('z')结果意外

可能重复:
C/C++中的字符大小('a')

为什么这个程序输出4而不是1?

void main()
{
   printf("%d",int(sizeof('z')));
}
Run Code Online (Sandbox Code Playgroud)

'z'是一个字符,sizeof('z')必须打印1?

c sizeof

0
推荐指数
2
解决办法
258
查看次数

通过套接字发送的内容的数据类型是什么?

使用Berkeley套接字api时,通过read/send或write/recv调用发送的内容的数据类型是什么?例如 -

char *msg = "Our Message!";
int len, bytes_sent;
len = strlen(msg);
bytes_sent = send(sockfd, msg, len, 0);
Run Code Online (Sandbox Code Playgroud)

在这段代码中,我们使用char类型,但是我们仅限于char类型,因为send/write/sendto通常采用void *类型.我也看到了一些参数,比如我们发送一些int,它实际上可能存储在little endian/big endian中,如果它们的endianess不匹配,会导致b/w source/dest出现问题.那么为什么不char输入这个问题呢?

另外C和C++等不同的语言也有不同的大小char,为什么这不是一个问题呢?如果socket不关心任何type内容并且只是将内容视为缓冲区,那么当不同的tcp服务器/客户端用不同的语言编写并相互通信时,为什么我们不会看到数据的随机损坏?

简而言之,我可以通过套接字安全地发送什么值(类型)?

c c++ sockets linux networking

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

为什么sizeof()在输入为(char)和'A'时返回不同的值

我正在努力 sizeof()

当我输入参数为char数据类型时

J=sizeof(char);
Run Code Online (Sandbox Code Playgroud)

它输出为1.

但是当我进入这样的论点时

J=sizeof('A');
Run Code Online (Sandbox Code Playgroud)

我输出为4.

由于它的参数是char数据类型,它应该返回1作为输出,为什么它返回4/2(取决于32位/ 64位设备).

c character sizeof

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

C中%c和%s的区别是什么

何时使用%s而不是%c.例如:

#include <stdio.h>
#include <string.h>
int main(void) {

        char name[31] = "My name is Arnold";

        printf(" %c \n", name);

        return 0;


}
Run Code Online (Sandbox Code Playgroud)

如果我将%c更改为%s,我会得到:我的名字是Arnold,但如果将%s更改为%c,我会得到一些奇怪的东西:

 ?
Run Code Online (Sandbox Code Playgroud)

c

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