指针进阶——字符指针
一般使用:
int main()
{
char ch = 'w';
char *pc = &ch;
printf("%c\n", *pc);//*pc = 'w';
return 0;
}
方法二:
int main()
{
char* pstr = "hello bit.";
printf("%s\n", pstr);
return 0;
}
方法二是将常量字符串的首地址放在了指针变量pstr中
面试题
#include <stdio.h>
int main()
{
char str1[] = "hello bit.";
char str2[] = "hello bit.";
char *str3 = "hello bit.";
char *str4 = "hello bit.";
if (str1 == str2)
printf("str1 and str2 are same\n");
else
printf("str1 and str2 are not same\n");
if (str3 == str4)
printf("str3 and str4 are same\n");
else
printf("str3 and str4 are not same\n");
return 0;
}
分析
str1和str2是将两个相同的字符串存入到两个不同地址下的数组,因此,对比的时候由于数组的首元素的地址不同,结果是不同的。而str3和str4指向的都是常量区里的相同一串字符串,并且将这段字符串的首地址存在里面,因此,str3和str4比较是相等的。