//用数组下标和指针操作字符串
void main()
{
int i = 0;
char*p = NULL;
char buf5[128] = "abcdefg";
for (; i < strlen(buf5); i++)
{
printf("%c",buf5[i]);
}
p = buf5;//数组名代表首元素的地址
for (i=0; i < strlen(buf5); i++)
{
printf("%c", *(p+i));
}
for (; i < strlen(buf5); i++)
{
printf("%c", *(buf5+i)); //buf5[i]会被编译器翻译成*(buf5+i)
}
//[] 和 *的推导过程
//buf5[i]==>buf5[0+i]==>*(buf5+i)
{
//buf5 = buf5 + 1;/错误 做c++编译器的人再让buf5出娘胎的时候就已经做成的常量指针了
}
return;
}
//[]的本质:和*是一样的 只不过是符号猿们的阅读习惯
//buf5是一个指针 只读的常量 buf5是一个常量指针 析构内存的时候 保证buf5所指向的内存空间安全释放
//p普通指针和内存首地址的区别