内存中char指针的C字节

use*_*766 0 c pointers allocation

我想计算一个char指针占用内存的字节数.指针指向一个包含100个字符的字符串.

根据以下程序,char需要4个字节

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  char b;
  b = 'b';
  printf("%p\n",&b);

  system("pause");
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

指针是否相同?因此,对于100个字符串,它在内存中保存了400个字节?

wRA*_*RAR 8

char需要一个字节.指向任何东西的指针通常需要4或8个字节,具体取决于架构.当然,一个对象和指向它的指针是不同的东西,它们使用单​​独的内存,所以如果100-char字符串使用100或101字节(取决于你如何计算以及如何存储字符串),指向它的指针仍将使用4个字节.


skn*_*mov 5

不,对于 100 个字符的字符串,您需要 100 个字节 + 1 个字节用于 '\0' 字符串终止符。您的程序返回 4 字节整数,因为您正在打印指向 char 的指针的值。Char 的大小为 1 个字节,不依赖于体系结构。指针的大小取决于体系结构,通常,32 位架构为 4 字节,64 位架构为 8 字节。