为了能保证局部变量 内存首地址的安全性 否则无法析构 数组的空间
int main(int argc, char *argv[])
{
//3、通过数组下标和指针操作字符串
int i = 0;
char *p = NULL;
char buf5[128]="abcdef";
//3.1 下标操作
for(i=0;i<strlen(buf5);i++)
{
printf("buf5[%d]:%c\n",i,buf5[i]);
}
printf("-------------------------------\n");
//3.2 指针操作
//重要 buf5:代表数组首元素的地址 &buf5:代表整个数组的地址
//buf5和&buf5代表的数组类型不一致
p = buf5;
for(i=0;i<strlen(buf5);i++)
{
printf("buf5[%d]:%c\n",i,*(p+i));
}
printf("-------------------------------\n");
//[]和*p
//推演过程为:i变0+I, 去[]号加*号
//buf5[i]==>buf5[0+i]==>"buf5(0+i)"==>*(buf5+i)
//其实本质:指针*p间接寻址,操作内存;
//[] 编译器为我们做了*p操作而已
/**
* buf5= 0x1;错误
* buf5:是一个常量指针
*/
for(i=0;i<strlen(buf5);i++)
{
printf("buf5[%d]:%c\n",i,*(buf5+i));
}
printf("-------------------------------\n");
for(i=0;i<strlen(buf5);i++)
{
printf("buf5[%d]:%c\n",i,p[i]);
}
printf("Hello World!\n");
system("pause");
return 0;
}