#include<stdio.h>
int main(){
char ch='w';
char* pc=&ch;
*pc='b';
return 0;
}
指针就是指向一块地址,对指针进行解应用可以得到指向地址的值,相同的也可以通过指针改变该地址的值。
char* p="abcdef";
printf("%s",p);
这里指针p里存放的是首字符a的地址,可以通过得到a的地址,把接下来的字符串一起打印下来,并且该字符串以及首字符不能通过解应用来修改。
可以这样想,如果指针p里存放的是abcdef,但是指针p是char类型的只能存放4个字节,没有那么大的空间可以存放该字符串,所以指针p存放的是首字符a的地址。
const char* p1="abcdef";
const char* p2="abcdef";
char arr1[]="abcdef";
char arr2[]="abcdef";
if(p1==p2)
printf("p1 = p2\n");
else
printf("p1 != p2\n");
if(arr1==arr2)
printf("arr1 = arr2\n");
else
printf("arr1 != arr2\n");
该代码输出p1=p2,arr1!=arr2。
因为p1和p2都是指针,它们两个都是指向字符串abcdef中首字符a的地址,所以p1=p2。
arr1和arr2为char类型的数组,它们各自开辟了一块空间存放字符串abcdef,所以arr1!=arr2.