深圳网站优化计划,广东东莞免费网站制作公司,网站后台百度商桥代码哪里安装,外贸网站产品简介#xff1a; CSDN博客专家#xff0c;专注Android/Linux系统#xff0c;分享多mic语音方案、音视频、编解码等技术#xff0c;与大家一起成长#xff01; 优质专栏#xff1a;Audio工程师进阶系列【原创干货持续更新中……】#x1f680; 优质专栏#xff1a;多媒… 简介 CSDN博客专家专注Android/Linux系统分享多mic语音方案、音视频、编解码等技术与大家一起成长 优质专栏Audio工程师进阶系列【原创干货持续更新中……】 优质专栏多媒体系统工程师系列【原创干货持续更新中……】 人生格言 人生从来没有捷径只有行动才是治疗恐惧和懒惰的唯一良药. 更多原创,欢迎关注Android系统攻城狮 1.前言 本篇目的C语言之指针的地址和指向的内容总结与用法。 2.指针的地址和指向的内容介绍
C语言中的指针是一个非常重要的概念它涉及到内存地址和数据内容的访问。在C语言中指针变量可以存储其他变量的地址通过指针我们可以直接访问内存中的数据。本篇文章将对C语言中指针的地址和指向的内容进行总结。首先我们需要明确指针的两个基本概念地址和指针变量。在计算机中每个变量都占用一段内存空间这个内存空间有一个唯一的地址。指针变量是一个特殊类型的变量它的值为内存地址。通过指针变量我们可以找到内存中对应的数据。接下来我们来了解一些关于指针的基础知识。指针变量在内存中占用4个字节在32位系统中或8个字节在64位系统中的空间因为指针变量存储的是内存地址而内存地址通常是一个32位或64位的二进制数。指针变量本身是一个变量它也可以被其他指针变量指向这种关系称为指针的指针或者称为二级指针。在C语言中我们使用取地址运算符来获取一个变量的地址。例如如果我们有一个整型变量a我们可以使用a来获取变量a的地址。同样我们使用间接寻址运算符来获取指针变量指向的数据。例如如果我们有一个指向整型变量a的指针变量p我们可以使用p来获取变量a的值。指针的类型对于指针的使用非常重要。指针的类型决定了指针所指向的数据的类型。例如一个指向整型变量的指针变量其类型为int*一个指向字符型变量的指针变量其类型为char*。我们在定义指针变量时必须指定指针的类型这样编译器才知道指针所指向的数据类型从而保证程序的正确性。指针的运算包括指针与整数的运算、指针与指针的运算以及指针与关系运算的运算。指针与整数的运算指的是指针变量与整数进行加减运算。例如如果有一个整型指针变量p我们可以使用p1来将指针向后移动一个整型数据的大小。指针与指针的运算指的是两个指针变量进行加减运算。例如如果有两个整型指针变量p1和p2我们可以使用p1-p2来计算两个指针之间的距离。指针与关系运算的运算指的是使用关系运算符如、、等来比较两个指针变量的大小。最后我们来总结一下C语言中指针的地址和指向的内容。指针的地址是指针变量在内存中的位置而指针指向的内容是指针变量所指向的数据。通过指针我们可以直接访问内存中的数据从而实现对数据的快速访问和修改。指针的使用需要谨慎因为错误的指针使用可能会导致程序崩溃或者产生不可预测的结果。因此在实际编程中我们需要充分了解指针的本质掌握指针的基本操作并遵循良好的编程习惯以确保程序的稳定性和可靠性。
3.实例用法
1.改变指针指向的地址实例用法
#include iostream
#include string.h
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 XiaoMiaddr(p) 0x7fff95611910
addr(p1) 0x7fff95611910
addr(p2) 0x56487c779043
p1 XiaoMi
p2 VIVO总结通过改变p2指向的地址从而改变p2指向的内容此时p2的地址与p和p1已经不同它重新指向一个字符串常量。
2.改变指针指向的内容实例用法
#include iostream
#include string.h
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 XiaoMiaddr(p) 0x7ffe0c586040
addr(p1) 0x7ffe0c586040
addr(p2) 0x7ffe0c586040
p1 VIVO
p2 VIVO总结通过改变p2指向的内容但是没有p2的地址因为p、p1、p2指向的是同一个地址所以改变他们其中一个的内容则他们所有的内容都改变了。