一,代码尝试
看一段代码,你认为的结果是什么呢?
#include<stdio.h>
//1-1字符指针(内存存放)
int main()
{
char str1[] = "hello";//数组str1
char str2[] = "hello";//数组str2
char* str3 = "hello";//指针str3
char* str4 = "hello";//指针str4
if (str1 == str2)
printf("same\n");
else
printf("not\n");
if (str3 == str4)
printf("same\n");
else
printf("not\n");
return 0;
}
或许看到这串代码,你完全没有思路去解决,但不要着急,跟着小编的步伐走,最后你一定能够理解的!!!
二,基本知识
(1)字符指针的两种不同指向
1.指向地址:如下
char ch = 'a' ; //定义一个字符变量ch,赋值为 'a'
char *pc = &ch ;//定义一个字符指针指向变量ch的地址
2.指向字符串:如下
char* pa = "hello" ; //定义一个指针指向字符串
(需要注意的是该处的字符串为常量字符串,是不可更改的)
三,图片分析上述代码
(1)首先来看两个数组 arr1 和 arr2
(2)再来看两个指针
(四)代码再次分析注释
#include<stdio.h>
//1-1字符指针(内存存放)
int main()
{
char str1[] = "hello";//数组str1,开辟一块内存空间1,用来存放hello
char str2[] = "hello";//数组str2,开辟一块内存空间2,用来存放hello
char* str3 = "hello";//指针str3,指向原本hello所在内存首元素地址,由于hello为常量字符串,
//所以在内存中只开发一块空间,即str3和str4指向的地址一样
char* str4 = "hello";//指针str4,指向原本hello所在内存首元素地址
if (str1 == str2)
printf("same\n");//不打印,由于是str1和str2地址不同
else
printf("not\n");//打印
if (str3 == str4)
printf("same\n");//打印
else
printf("not\n");//不打印
return 0;
}
(本文章来自于小编学习总结,如有与其他视频教学内容重复请见谅)