c - 为什么 sizeof 在 C 中对同一个字符串返回不同的值?

标签 c string unix sizeof

<分区>

Possible Duplicate:
Sizeof doesn't return the true size of variable in C
C -> sizeof string is always 8

Sizeof 打印出 6 用于:

printf("%d\n", sizeof("abcde"));

但它打印出 4 用于:

char* str = "abcde";
printf("%d\n", sizeof(str));

谁能解释一下为什么?

最佳答案

字符串文字"abcde" 是一个字符数组。它有 6 个字节长,包括空终止符。

char* 类型的变量是指向字符的指针。它的大小是一个指针的大小,在 32 位系统上是 4 个字节。 sizeof 是编译时操作,因此它只查看变量的静态类型,在本例中为 char*。它不知道指向什么。

† 可变长度数组除外,这是 C99 语言标准中引入的一个特性

关于c - 为什么 sizeof 在 C 中对同一个字符串返回不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9644267/

相关文章:

c - 在同一作用域内声明两个或多个同名变量

c++ - Char 数组上的累积按位或

windows - 批处理文件 - 如何读取由空格分隔的字符串的第一个标记

linux - 如何将具有符号链接(symbolic link)的文件夹复制到另一个目录

c - 确定使用哪种 sockaddr 变体的正确方法是什么?

c - C 中的日期格式

string - 如何通过perl中的每个字符比较2个字符串

java - 将包含算术符号的字符串转换为整数值

shell - 在 linux bourne shell : How to count the occurrences of a specific word in a file

linux - 你如何比较数组的值和 bash 脚本中的变量?