C中sizeof与char a []和char * a有什么区别? [重复]
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C中sizeof与char a []和char * a有什么区别? [重复]相关的知识,希望对你有一定的参考价值。
这个问题在这里已有答案:
#include <stdio.h>
int main(void)
char a[] = "Love you!";
char *b = "Love you!";
printf("%s\n", a);
printf("Length: %d\n", sizeof(a));
printf("%s\n", b);
printf("Length: %d\n", sizeof(b));
return 0;
看看上面的代码。
这是输出:
Love you!
Length: 10
Love you!
Length: 8
我理解char [] =“爱你!”它有10个字符,末尾有一个不可见的'\ 0'。
我没有得到的是char * b的长度只有8,而其中的字符可以完美打印。
C中sizeof与char a []和char * a有什么区别?
答案
数组和指针是不同的东西。
char a[] = "Love you!"
只是char a[10] = "Love you!"
的语法糖。它创建一个变量,它是一个由char
类型的十个对象组成的数组。所以sizeof a
会给你10个char
s的大小。
char *b = "Love you!"
创建一个变量,它是一个指针,并使其指向字符串文字"Love you!"
的第一个字符。所以sizeof b
会给你一个指向char
的指针的大小。
以上是关于C中sizeof与char a []和char * a有什么区别? [重复]的主要内容,如果未能解决你的问题,请参考以下文章