天天看点

字符指针和字符数组的使用区别

先看一个程序代码

输出结果是

str1 != str2

str3 == str4

解释如下:

1. str1和str2是两个字符数组,分别存储在栈空间上。str1表示这个字符数组的内存首地址,str2表示另一个字符数组的首地址,因为两个首地址是不同的所以str1 != str2。如图所示

字符指针和字符数组的使用区别

2. str3和str4是两个指针,都是指向“abc”的内存首地址。"abc"是存储在内存中的某一个快地址,str3和str4同时指向这个首地址,因此str3 == str4,如图所示

字符指针和字符数组的使用区别

3. 要获得str1和str2的地址为 &str1和&str2,并且有 &str1 != &str2;同时也有&str3 != &str4,因此这是获得指针变量在内存的地址,所以两个指针变量在内存中存储位置是不同的。

4. 要比较两个字符数组是否相同可以使用strcmp函数,而比较两个字符指针指向内容是否相同直接使用指针比较即可。