深圳品牌网站推广百度推广去哪里学技术

bicheng/2026/1/21 14:21:37/文章来源:
深圳品牌网站推广,百度推广去哪里学技术,0元免费做代理,上海市云企业有限公司C语言之指针知识点总结 文章目录 C语言之指针知识点总结1. 初识指针1.1 取地址操作符 1.2 指针变量1.3 解引用操作符 *1.4 指针变量1.4.1 大小1.4.2 指针类型的意义 1.5 void*指针1.6 const关键字1.61 const修饰变量1.6.2 const修饰指针变量 1.7 指针的运算1.7.1 指针-整数…C语言之指针知识点总结 文章目录 C语言之指针知识点总结1. 初识指针1.1 取地址操作符 1.2 指针变量1.3 解引用操作符 *1.4 指针变量1.4.1 大小1.4.2 指针类型的意义 1.5 void*指针1.6 const关键字1.61 const修饰变量1.6.2 const修饰指针变量 1.7 指针的运算1.7.1 指针-整数1.7.2 指针 - 指针1.7.3 指针的关系运算 1.8 野指针1.8.1 规避野指针 1.9 指针的传值和传址 2. 深入指针2.1 数组名的理解2.2 ⼀维数组传参的本质2.2 二级指针2.3 指针数组2.4 数组指针变量2.5 二维数组传参的本质2.6 函数指针变量2.6.1 函数指针变量的使用2.6.2 函数指针数组 1. 初识指针 1.1 取地址操作符 #include stdio.hint main() {int a 10;a;return 0; }取地址操作符 用于取出变量的地址在这里插入代码片 1.2 指针变量 取出的地址要存放指针变量中 #include stdio.hint main() {int a 10;int* p a;return 0; }* 说明 p 是个指针变量前面的int说明 指向的是一个int类型的对象 1.3 解引用操作符 * 解引用操作符是通过指针来找到指针指向的对象 #include stdio.hint main() {int a 10;int* p a;*p 20;return 0; }*p 的意思就是通过pa中存放的地址找到指向的空间 p其实就是a变量了所以p 0这个操作符是把a改成了20 1.4 指针变量 1.4.1 大小 指针变量的大小取决于系统如果是32位平台下地址是32个bit位即4个字节 64位平台下地址是64个bit位即8个字节 1.4.2 指针类型的意义 一指针的类型决定了对指针解引⽤的时候有多⼤的权限⼀次能操作⼏个字节 二指针的类型决定了指针向前或者向后⾛⼀步有多⼤距离 一 #include stdio.h int main() {int m 0x11223344;int n 0x11223344;int* pi m;char* pc n;*pi 0;*pc 0;return 0; }上述代码中pi会将m的4个字节全都改成0而pc只会改n的1个字节改成0由于指针类型不同解引用时的权限不同 二 #include stdio.h int main() {int n 10;char *pc (char*)n;int *pi n;printf(%p\n, n);printf(%p\n, pc);printf(%p\n, pc1);printf(%p\n, pi);printf(%p\n, pi1);return 0; }char* 的指针解引⽤就只能访问⼀个字节⽽ int* 的指针的解引⽤就能访问四个字节 1.5 void*指针 void可以用来存放任意类型的地址可以理解为无类型指针或叫泛指型但是void类型的指针不用解引用和指针的±** 1.6 const关键字 1.61 const修饰变量 #include stdio.hint main() {const n 20;n 10;//err 不可修改return 0; }当用const修饰变量时被修饰的变量就无法更改它的值 1.6.2 const修饰指针变量 #include stdio.hint main() {int a 10;int b 20;const int* x a; //const放在*左边 与下面一种写法一致int const* y a; //const放在*左边 int* const z a; //const放在*右边const int* const m a;//const放在*两边x b; *x 10; /errz b; /err*z 20;m b; /err*m 20; /errreturn 0; }结论 • const如果放在的左边修饰的是指针指向的内容保证指针指向的内容不能通过指针来改变。但是指针变量本⾝的内容可变。 • const如果放在的右边修饰的是指针变量本⾝保证了指针变量的内容不能修改但是指针指向的内容可以通过指针改变 1.7 指针的运算 1.7.1 指针±整数 由于一维数组在内存中是连续存放的那么就可以通过指针±整数也就是指针偏移来遍历数组 代码一 #include stdio.h //指针- 整数 int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int* p arr[0];int i 0;int sz sizeof(arr) / sizeof(arr[0]); //计算数组中的元素个数for (i 0; i sz; i){printf(%d , *(p i));//pi 这⾥就是指针整数}return 0; }代码二 #include stdio.h int main() {int arr[10] { 1,2,3,4,5,6,7,8,9,10 };int i 0;int sz sizeof(arr) / sizeof(arr[0]);for (i 0; i sz; i){printf(%d , arr[i]);}return 0; }代码一中的*(p i) 就是 *(arr i ) arr[ i ] 编译器会处理成 *(arr i ) 所以通过这两种方式都可以实现数组元素的打印 1.7.2 指针 - 指针 //指针-指针 #include stdio.h int my_strlen(char* s) {char* p s;while (*p ! \0)p;return p - s; } int main() {printf(%d\n, my_strlen(abc));return 0; }通过指针 - 指针的方式来模拟实现strlen 当*p中的值不为’\0‘时如果指针加整数的方式来找到’\0’的位置然后通过高地址 - 低地址得出字符串的长度 指针 - 指针的绝对值是计算两个地址之间的元素个数 1.7.3 指针的关系运算 //指针的关系运算 #include stdio.h int main() {int arr[10] {1,2,3,4,5,6,7,8,9,10};int *p arr[0];int i 0;int sz sizeof(arr)/sizeof(arr[0]); //计算数组中的元素个数while(parrsz) //指针的⼤⼩⽐较{printf(%d , *p);p;}return 0; }p中存放的是数组中的首元素地址 arrsz 首元素地址加上数组元素个数得到数组结尾的地址 当p的地址小于数组结尾的地址打印*p 然后找到下一个元素 就可以实现数组元素的打印 1.8 野指针 概念 野指针就是指针指向的位置是不可知的随机的、不正确的、没有明确限制的 野指针的成因 指针未初始化指针越界访问指针指向的空间释放 代码一 #include stdio.h int main() { int *p;//局部变量指针未初始化默认为随机值*p 20;return 0; }指针未初始化不知道指向哪个空间p是野指针 代码二 #include stdio.h int main() {int arr[10] {0};int *p arr[0];int i 0;for(i0; i11; i){//当指针指向的范围超出数组arr的范围时p就是野指针*(p) i;}return 0; }数组中只有10个元素却循环了12次指针访问越界了p是野指针 代码三 #include stdio.h int* test() {int n 100;return n; } int main() {int*p test();printf(%d\n, *p);return 0; }当进入test函数时系统在内存中创建了一个空间用来存放n的值当出test函数时n的空间就被销毁了所以p就指向了一个已经销毁的空间p是野指针 1.8.1 规避野指针 1.初始化指针的时候就给指针一个初始值如果不知道指针要指向哪个空间将指针置为NULL #include stdio.h int main() {int num 10;int*p1 num;int*p2 NULL;return 0; }2.小心指针越界 内存有多大的空间就让指针访问多大的空间不能超出范围 3.避免返回局部变量的地址 1.9 指针的传值和传址 代码一 #include stdio.h void Swap(int x, int y) {int tmp x;x y;y tmp; } int main() {int a 0;int b 0;scanf(%d %d, a, b);printf(交换前a%d b%d\n, a, b);Swap1(a, b);printf(交换后a%d b%d\n, a, b);return 0; }代码二 #include stdio.h void Swap(int* x, int* y) {int tmp *x;*x *y;*y tmp; } int main() {int a 0;int b 0;scanf(%d %d, a, b);printf(交换前a%d b%d\n, a, b);Swap1(a, b);printf(交换后a%d b%d\n, a, b);return 0; }代码一 无法交换两个变量的值在传值调用中改变形参的值无法改变形参的值 代码二 传入的是两个变量的地址在函数中改变形参就是改变实参所以实现了两个变量的交换 2. 深入指针 2.1 数组名的理解 数组名就是数组首元素的地址 有两个情况例外 sizeof(数组名) 计算的是整个数组的大小 数组名 取出的是数组的地址而非首元素的地址 2.2 ⼀维数组传参的本质 #include stdio.h void test(int arr[]) {int sz2 sizeof(arr)/sizeof(arr[0]);printf(sz2 %d\n, sz2); } int main() {int arr[10] {1,2,3,4,5,6,7,8,9,10};int sz1 sizeof(arr)/sizeof(arr[0]);printf(sz1 %d\n, sz1);test(arr);return 0; }代码运行结果 sz1 10 sz2 1 一维数组传参传的是首元素的地址所以无法通过函数来计算一维数组中的元素个数 #include stdio.h void test(int* arr) {int sz2 sizeof(arr)/sizeof(arr[0]);printf(sz2 %d\n, sz2); } int main() {int arr[10] {1,2,3,4,5,6,7,8,9,10};int sz1 sizeof(arr)/sizeof(arr[0]);printf(sz1 %d\n, sz1);test(arr);return 0; }结论⼀维数组传参形参的部分可以写成数组的形式也可以写成指针的形式。 2.2 二级指针 指针变量也是变量是变量就有地址所以可以使用二级指针来存放指针变量的大小同时也有三级指针四级指针三级指针之后就不常见了 int main() {int num 10;int* p num;int** pp p;return 0; }2.3 指针数组 指针数组是存放指针的数组 int* p[4];p是个指针数组指向4个int*类型的元素 2.4 数组指针变量 数组指针变量是用来存放数组的地址 int (*p)[5] { 0 };p先和*结合说明p是⼀个指针变量变量然后指着指向的是⼀个⼤⼩为10个整型的数组。所以p是⼀个指针指向⼀个数组叫 数组指针 [ ]的优先级要⾼于号的所以必须加上来保证p先和结合 2.5 二维数组传参的本质 #include stdio.hvoid test(int a[3][5], int r, int c) { int i 0; int j 0;for (i 0; i r; i){for (j 0; j c; j){printf(%d , a[i][j]);}printf(\n);} } int main() { int arr[3][5] { {1,2,3,4,5}, {2,3,4,5,6},{3,4,5,6,7} }; test(arr, 3, 5); return 0; }与一维数组不同的是⼆维数组传参本质上也是传递了地址传递的是第⼀ ⾏这个⼀维数组的地址 与一维数组相同这⾥实参是⼆维数组形参也写成⼆维数组的形式也可以写成指针的形式 总结 一维数组的传参传的是首元素的地址 二维数组的传参传的是首元素的地址不过二维数组的首元素是数组中第一行的元素 一维数组和二维数组的形参部分可以写成数组形式也可以写成指针的形式 2.6 函数指针变量 函数也是有地址的可以使用函数指针变量来存放函数的地址 与数组相同的是函数名是函数的地址 int (*p)(int x,int y); int (*p)(int, int);//x 和 y可以省略其中int是函数的返回类型p是函数指针变量名称int int是p指向的函数的形参部分 去掉函数指针变量的名字就是函数指针变量的类型 int (*)(int, int) 2.6.1 函数指针变量的使用 #include stdio.h int Add(int x, int y) {return x y; } int main() {int(*pf3)(int, int) Add;printf(%d\n, (*pf3)(2, 3));printf(%d\n, pf3(3, 5));return 0; }通过函数指针变量来调用函数 2.6.2 函数指针数组 函数指针数组和指针数组一样但是函数指针数组是用来存放函数指针变量的 int (*p[5])(int x, int y); int (*p[5])(int, int);p指针变量先与[ ] 结合是数组数组中 存放的是int (*)(int int)类型的函数指针

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/88164.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做一个网站成本是多少网站购物车代码怎么做

在品牌发展的道路上,产品质量的把控非常重要,关系到品牌的竞争力,但品牌要长期发展,产品要获得市场足够份额,还需要有稳定的价格体系做支撑,这个价格不是仅凭品牌单方面的定价而定,而是整个渠道…

东莞教育团购网站建设网页版传奇下载

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

如何做网站内链wordpress编辑器

查看专栏目录 canvas示例教程100专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重…

深圳网站设计制作北京网站建设模板下载

\cong \sim \simeq 对应的Latex实现分别为: ≅ \cong ≅ ∼ \sim ∼ ≃ \simeq ≃

美食网站建设书vi设计要做什么

测试环境信息: 系统为银河麒麟V10 数据库为Kingbase ES V8 数据库安装目录为/opt/Kingbase/ES/V8 ksql命令位于/opt/Kingbase/ES/V8/Server/bin下 使用--help获取帮助 续上图 1.查看数据库列表 ./ksql -U system -l 2.查看数据库版本 ./ksql -V 3.连接指定的数据库tes…

酷播wordpress视频插件赣州网站seo

如果想要将一个文件的内容拷贝到另一个文件中,常规的做法是读取源文件,然后再把内容写入到目的文件中: #include <fstream> #include <iostream> #include <string> #include <vector>using namespace std;vector<string> readFile(const st…

怎么做自己的网站平台文化网站策划

💡该教程为改进YOLOv8指南,属于《芒果书》📚系列,包含大量的原创首发改进方式🚀 💡🚀🚀🚀本博客内含改进源代码,按步骤操作运行改进后的代码即可 💡更方便的统计更多实验数据,方便写作 新增YOLOv8打印FPS指标 完善(一键YOLOv8打印FPS指标) 文章目录 完善…

做动态的网站的参考资料有哪些动漫设计和动画设计

26题提示所有的空格和注释都会被过滤掉 输入?id0判断闭合方式&#xff0c;回显报错可以确定闭合方式为单引号 正常思路是需要通过注释符将后面的语句注释掉&#xff0c;但是这一关的注释符被过滤了&#xff0c;可以考虑使用将后面的语句也闭合的思路来避免引号带来的报错。输…

中小型企业 公司网站建设个人网站制作多少钱

seata的部署和集成 一、部署Seata的tc-server 1.下载 首先我们要下载seata-server包&#xff0c;地址在http&#x1f615;/seata.io/zh-cn/blog/download.html 当然&#xff0c;课前资料也准备好了&#xff1a; 2.解压 在非中文目录解压缩这个zip包&#xff0c;其目录结构…

学校网站建设策划方案湖南网站推广营销设计

测试题 1.(1). 对于int类型的变量&#xff0c;Java编译器和大多数C编译器都是分配4个字节的内存&#xff0c;4个字节有32个二进制位即总共可以拥有多少种状态&#xff0c;其中一半的状态用来存储负数&#xff0c;一半的状态用来存储0和正数。因此&#xff0c;int类型的变量可以…

合法购物网站建设信息港官网

目录 P1031 [NOIP2002 提高组] 均分纸牌 原题链接 : 题面 : 思路 : 代码 : P1036 [NOIP2002 普及组] 选数 原题链接 : 题面 : 思路 : 代码 : P1060 [NOIP2006 普及组] 开心的金明 原题链接 : 题面 : 思路 : 01背包例题 : 代码 : P1100 高低位交换 原题…

做搜索关键词任务网站网站开发项目说明书

“ 本文主要讨论线性表在多项式计算中的应用&#xff0c;讨论内容涉及到一元n次多项式在计算机中的表示&#xff0c;及多项式相加运算。”01在数学上&#xff0c;一个一元n次多项式可以按照升幂写成Pn(x) p0 p1x p2x2 …… pnxn它由n1个系数唯一确定。因此&#xff0c;一个…

wordpress 仿站 主题陕西城乡建设网官网

文章目录 QT安装与helloworld1.概念&#xff1a;2.安装QT3.配置环境变量4.创建项目5.运行效果 QT安装与helloworld 1.概念&#xff1a; Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境。Qt Creator可带来两大关键益处&#xff1a;提供首个专为支持跨平台开发而设计的…

学什么可以做视频网站网站开发设计的技术路线

文章目录 一、583、两个字符串的删除操作二、72、编辑距离三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、583、两个字符串的删除操作 思路分析&#xff1a;本题的思路和115、不同的子序列差不多&#xff0c;只是变成…

vs设置网站开发环境廉政网站建设

文章目录 1.前言2. Plex网站搭建2.1 Plex下载和安装2.2 Plex网页测试2.3 cpolar的安装和注册 3. 本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4. 公网访问测试5. 结语 正文开始前给大家推荐个网站&#xff0c;前些天发现了一个巨牛的 人工智能学习网站&#xff0c; 通…

商标设计网站排行lamp 安装wordpress

在使用layui的form表单提交以后&#xff0c;请求状态总是canceled。后来在form表单的后面添加了一行代码&#xff1a; return false; 就可以了。 文档&#xff1a;https://www.layui.com/doc/modules/form.html#onsubmit 错误&#xff1a; 解决方法&#xff1a; 总结一下&…

php语言的网站建设贵阳有做网站的公司吗

1.简介在我们开发高性能代码时&#xff0c;需要各种针对性能优化进行编码。那么如何才能知道我们所加的代码是否有性能方面的正向优化呢&#xff1f;有了BenchmarkDotNet&#xff0c;做性能对比测试就非常容易了&#xff0c;只需要把你的测试方法加上特性[Benchmark], 想做不同…

网站建设与网页制作模拟试题seo入门版

平台RK3568 基线 3.2 beta 在移植Harmonys的时候发现一个问题&#xff0c;就是开机正常显示&#xff0c;uboot和kernel正常&#xff0c;开机后灭屏&#xff0c;等待系统进入Deep &#xff0c;然后按power按键唤醒设备。此时出现花屏或者不显示问题 多次测试发现&#xff0c;如…

简单的网站架构东莞房价2022最新楼盘消息

0x01 产品简介 Progress Kemp LoadMaster是一款高性能的应用交付控制器&#xff0c;具有可扩展性&#xff0c;支持实体硬件和虚拟机的负载均衡。它提供了当今应用服务所需的各种功能&#xff0c;包括深度用户验证、资安防护&#xff08;如WAF/IPS/DDoS防护&#xff09;以及零信…

c 做网站教程哪个网站做app

一&#xff1a;首先, C中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式). class CxString // 没有使用explicit关键…