C/C++的指针涉及到内存相关的知识,是C/C++中十分重要的一块知识之一。本篇博文通过一小段代码来理解指针的相关用法。
数组与指针关系
代码:
#include <stdio.h>
int main()
{
char str[] = "abcdef\r\n";
char *p = &str[3]; //指向str[3],即d这块内存
p = p - 1; //指向前一个地址。即c
*p = '9'; //修改当前地址的内容
printf("%s\r\n", p);
printf("%s\n", p+1);
printf("%s\r\n", p-2);
printf("%s", str);
p[1] = '8';
p[2] = '0';
printf("%s\r\n", p);
return 0;
}
:
总结
printf("%s\r\n", p);
printf("%s\n", p+1);
printf("%s\r\n", p-2);
在执行这三条语句的时候,发现还打印出来了当前地址后面的内容。
printf("%s", str);
在修改*p的内容后,str的内容也跟着改变了。
p[1] = '8';
p[2] = '0';
printf("%s\r\n", p);
p指针也可以像数组一样,而且p[2]也可以修改,也代表p可以访问后面的地址内容。