前面你说对了,但后面
char *p = "abcd";
k =strlen(p);
i = sizeof(p);
因为此时p是一个指针,所有类型的指针都占4个byte,所以无论p指向什么东西,sizeof(p)都占4个byte,而strlen(p)就为(串的长度-1),因为‘\0’不计算在内。
我用C++BUILDER6, strlen("abcd") 为4; 不可能为5的
通过指针访问它所指向的一个变量是以间接访问的形式进行的,所以比直接访问一个变量要费时间,而且不直观,因为通过指针要访问哪一个变量,取决于指针的值(即指向), 例如*p2=*p1;实际上就是j=i;,前者不仅速度慢而且目的不明。但由于指针是变量,我们可以通过改变它们的指向, 以间接访问不同的变量,这给程序员带来灵活性,也使程序代码编写得更为简洁和有效。指针变量可出现在表达式中, 设int x, y *px=&x; 指针变量px指向整数x, 则*px可出现在x能出现的任何地方。例如: y=*px+5; /*表示把x的内容加5并赋给y*/ y=++*px; /*px的内容加上1之后赋给y [++*px相当于++(*px)]*/ y=*px++; /*相当于y=*px; px++*/