首先我们来看这段代码
1. #include<stdio.h> 2. int main() 3. { 4. // char ch='w'; 5. // char* p=&ch; 6. //本质上*ps是把hello bilt的首地址存储了 7. char* ps="hello bit";//是常量字符串,是不能改变的,相同的常量的字符串,地址里只保存一份 8. char arr[]="hello bit"; 9. printf("%s\n",ps); 10. printf("%s\n",arr); 11. return 0; 12. }
字符指针就是存储字符串的指针,有上面代码可以看出字符指针存放的就是字符串的首地址
下面我们来看一关于字符指针的题
1. #include<stdio.h> 2. int main() 3. { 4. char a1[]="hello bit"; 5. char a2[]="hello bit"; 6. char *a3="hello bit"; 7. char *a4="hello bit"; 8. if(a1==a2) 9. { 10. printf("a12\n"); 11. } 12. else 13. { 14. printf("-a12\n"); 15. } 16. if(a3==a4) 17. { 18. printf("a34\n"); 19. } 20. else 21. { 22. printf("-a34\n"); 23. } 24. return 0; 25. }
就是判断a1是否和a2相等,a3和a4是否相等,数组a1,a2和保存的字符串是一模一样的,如果用if()去判断,其实是不相等,因为我们去判断两个字符串是否相等,可以用strcmp(,),但需要引用头文件#include<string.h>
if(strcmp(a1,a2)==0)
我们再来看a3和a4,首先我们知道是常量字符串,是不能改变的,相同的常量的字符串,地址里只保存一份,指针变量a3,a4保存的就是字符串的地址,a3,a4是相等的