新手关于指针和数组二问。
1. 到底有没有办法得到数组的确切长度?我知道数组名代表的是数组首元素的地址,那么数组的长度到底有没有被记录呢?如果没有,那么:
int i[10];
cout << sizeof i; //输出40,即4*10,10个int的长度
好像从数组名中可以直接得到数组的长度嘛。那为什么很少有人用这种方法来检查数组的边界,而通常用常量呢?
2. 用指针访问数组元素是不是确实比用下标访问快?比如:
char s[] = "hello, world!";
for(int i = 0; s[i] != 0; i++)
s[i];
for(char* p = s; *p != 0; p++)
*p;
上面两种在效率上还有没有差别?