c - sizeof char **指针是否取决于机器的体系结构?

标签 c pointers sizeof

当我执行以下代码时:

int main()
{
    char **temp;
    printf("Size of **temp %d", sizeof(**temp));
    printf("Size of *temp %d", sizeof(*temp));
    printf("Size of temp %d", sizeof(temp));
    return 0;
}

我得到:
Size of **temp 1
Size of *temp 8
Size of temp 8

我不明白的是char指针的大小是8吗?它与机器无关吗?

最佳答案

在最初的问题中,您没有调用sizeofduskwuff为您修复了该问题。

产生的输出是:

Size of **temp 1
Size of  *temp 8
Size of   temp 8

原因:

在64位体系结构上,指针为8字节(无论指针指向什么)
 **temp is of type char ==> 1 byte
  *temp is of type pointer-to-char ==> 8 bytes
   temp is of type pointer-to-pointer-to-char ==> 8 bytes

关于c - sizeof char **指针是否取决于机器的体系结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10094137/

相关文章:

python - 在 Windows 中链接库

c++ - 为什么对于每个数组 a 和整数 j,a[j] 都等于 j[a]?

c++ - 是否有 Qt C++ 数据容器可用于动态大小结构?

c - 访问结构中指针(变量)结构的成员

c - C函数中任意数组类型的长度

python - 如何通过 Python Azure SDK 了解 Azure blob 对象的大小

c - 使用结构时跳过 "IF"函数

c - 是否必须将未定义的行为定义为未定义?

android - 从内存调试中隐藏 C 中的 char 数组值

c - 使用指针和结构需要左值作为增量操作数