简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】
优质专栏:多媒体系统工程师系列【原创干货持续更新中……】
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
本篇目的:C语言之指针的地址和指向的内容总结与用法。
#include
#include
using namespace std;
int main(){
char p[64] = "XiaoMi";
char *p1 = p;
char *p2 = p1;
//打印p、p1、p2地址
printf("addr(p) = %p\n",p);
printf("addr(p1) = %p\n",p1);
printf("addr(p2) = %p\n",p2);
//打印p1、p2指向的内容
printf("p1 = %s\n",p1);
printf("p2 = %s\n\n",p2);
//改变p2指向的地址
p2 = "VIVO";
//打印p、p1、p2地址
printf("addr(p) = %p\n",p);
printf("addr(p1) = %p\n",p1);
printf("addr(p2) = %p\n",p2);
//打印p1、p2指向的内容
printf("p1 = %s\n",p1);
printf("p2 = %s\n",p2);
return 0;
}
打印结果:
addr(p) = 0x7fff95611910
addr(p1) = 0x7fff95611910
addr(p2) = 0x7fff95611910
p1 = XiaoMi
p2 = XiaoMi
addr(p) = 0x7fff95611910
addr(p1) = 0x7fff95611910
addr(p2) = 0x56487c779043
p1 = XiaoMi
p2 = VIVO
总结:通过改变p2指向的地址,从而改变p2指向的内容,此时p2的地址与p和p1已经不同,它重新指向一个字符串常量。
#include
#include
using namespace std;
int main(){
char p[64] = "XiaoMi";
char *p1 = p;
char *p2 = p1;
printf("addr(p) = %p\n",p);
printf("addr(p1) = %p\n",p1);
printf("addr(p2) = %p\n",p2);
printf("p1 = %s\n",p1);
printf("p2 = %s\n\n",p2);
memset(p2, 0, 32);
memcpy(p2, "VIVO", 4);
printf("addr(p) = %p\n",p);
printf("addr(p1) = %p\n",p1);
printf("addr(p2) = %p\n",p2);
printf("p1 = %s\n",p1);
printf("p2 = %s\n",p2);
return 0;
}
打印结果:
addr(p) = 0x7ffe0c586040
addr(p1) = 0x7ffe0c586040
addr(p2) = 0x7ffe0c586040
p1 = XiaoMi
p2 = XiaoMi
addr(p) = 0x7ffe0c586040
addr(p1) = 0x7ffe0c586040
addr(p2) = 0x7ffe0c586040
p1 = VIVO
p2 = VIVO
总结:通过改变p2指向的内容,但是没有p2的地址,因为p、p1、p2指向的是同一个地址,所以改变他们其中一个的内容,则他们所有的内容都改变了。