一、初始化
char *p_ch = "china";//指向字符串china的首地址
printf("%c\n",*(p_ch));//c
char *p_ch = {"guangdong","guangzhou","shenzhen"};//三个char型指针,
//p_ch[0],代表“guangdong”的首地址,*p_ch[0]的结果是g
char ch = {"guangdong","guangzhou","shenzhen"};
#include<stdio.h> int main(){ /* char *ch[] = { "china", "ameria", "anhui", "guangdong" }; //char *p_ch = "china";//指针p_ch指向字符串china的首地址 //printf("%c\n", *(p_ch + 1));//h for (int i = 0; i < 4; i++){ printf("%s\n", ch[i]); } */ char *p_mesg = "don't be a fool!"; char *p_copy; p_copy = p_mesg;//指向“don't be a fool!”地址的第二个指针,而不是直接的数组复制, //使用指针操作比直接复制数组效率要高很多 printf("p_mesg= %s\n", p_mesg); printf("p_copy= %s\n", p_copy); printf("p_mesg= %p\n", p_mesg);//012A58
printf("p_copy= %p\n", p_copy);//012A58 printf("&p_mesg= %p\n", &p_mesg);//0030f897 printf("&p_copy= %p\n", &p_copy);//0030F890 return 0; }
//补充
//指针和字符串之间的关系 //当一个指针赋值给另一个指针是,两个指针和字符串之间的关系 #include<stdio.h> int main(){ char*p_str="abc"; char*p_scpy=p_str; printf("p_scpy=p_str\n"); printf("p_str=%s\n",p_str); //abc printf("p_scpy=%s\n",p_scpy); //abc printf("value of p_str=%p\n",p_str); //字符串abc的首地址 printf("value of p_scpy=%p\n",p_scpy); //字符串abc的首地址,同上 printf("**************************\n"); printf("p_str[0]=%c\n",p_str[0]); //字符串的首字符 printf("p_scpy[0]=%c\n",p_scpy[0]); //同上 printf("&p_scpy[0]=%p\n",&(p_str[0])); //字符串abc的首地址 printf("****************************\n"); printf("&p_str=%p\n",&p_str); //指针p_str的地址 printf("&p_scpy=%p\n",&p_scpy); //指针p_scpy的地址,与上不同 return 0; } /* p_scpy=p_str p_str=abc p_scpy=abc value of p_str=0x80485e0 value of p_scpy=0x80485e0 ************************** p_str[0]=a p_scpy[0]=a &p_scpy[0]=0x80485e0 **************************** &p_str=0xbfad6af8 &p_scpy=0xbfad6afc */ //补充二
//补充三使用取地址符号&和间接操作符(取值操作符)*可以方便的操作地址以及地址中的内容。