我和一个朋友正在为大学做一个C编程单元.
我们知道在C中本身没有"字符串",相反,字符串是由字符数组定义的.真棒!
所以当处理"字符串"时,很明显正确理解数组和指针很重要.
我们在很好地理解指针声明时,何时何时不取消引用指针,并且使用了许多printf来测试我们的实验.一切都很成功.
但是,当我们使用它时:
char *myvar = "";
myvar = "dhjfejfdhdkjfhdjkfhdjkfhdjfhdfhdjhdsjfkdhjdfhddskjdkljdklc";
printf("Size is %d\n", sizeof(myvar));
Run Code Online (Sandbox Code Playgroud)
它吐了出来Size is 8!
为什么8?显然'myvar'消耗了超过8个字节(或者是它)?
(我应该清楚并指出我非常清楚'strlen'.这不是获取字符串长度的练习.这是为了理解为什么sizeof为变量myvar返回8个字节.)
8是指针的大小.myvar是一个指向char的指针(因此是char*),在64位系统指针中是64位= 8字节
要获取以null结尾的字符串的大小,请使用以下代码:
#include<string.h>
#include<stdio.h>
int main()
{
char *x="hello there";
printf("%d\n",strlen(x));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
165 次 |
| 最近记录: |