去面试时几家公司很爱在char *和char []上做文章,很基础也容易犯错。面试题里很喜欢折腾这些内容,在这里简单的做个比较。
如果有错误,请指正。
1、Test 1
//字符数组大小未指定大小,指针变量操作数没有类型
#include <iostream>
int main()
{
using namespace std;
char a[]=" hello world\n";
char *b=" hello world\n";
cout<<"size of array = "<<;
cout<<" bytes.\n";
cout<<"size of pointer = "<<sizeof b;
cout<<" bytes.\n";
return 0;
}
当字符数组未指定大小时,数组占用的空间其实就是数组内字符所占用的空间,一个字符一个字节。注意“hello”前面的空格,数组结尾还有一个“\o”,所以sizeof a的结果是14个字节。
只要是求指针的大小的时候,它的值都是4,不管指针定义的类型。
图: