38.【C语言】指针(重难点)(C)
目录:
8.const 修饰指针
*修饰普通变量
*修饰指针变量
9.指针运算
*指针+或-整数
*指针-指针
*指针关系运算
往期推荐
承接上篇37.【C语言】指针(重难点)(B)
8.const 修饰指针
const 全称 constant adj.不变的
*修饰普通变量
#include <stdio.h>
int main()
{const int num = 0;num = 20;printf("%d\n", num);return 0;
}
这样写会报错

说明const修饰的值不可改变
注:在C语言中,这里的num是常变量,num的本质还是变量,因为有const修饰,编译器在语法上不允许修改这个变量;而在C++语言中,这里的num就是常量
如果要强行改变,用指针
#include <stdio.h>
int main()
{const int num = 0;int* pi = #*pi = 2;printf("%d\n", num);return 0;
}

但显然已经违反常变量的语法规则,需要限制指针的行动-->const修饰指针变量
*修饰指针变量
三种写法
1.const 放在*的左边
如const int* pi = # int const * pi = #

语法规则:指针指向的内容不能通过指针来改变,但是指针变量本身的值是可以改
*pi=?; 错误 pi=&n;正确
2.const 放在*右边
如int* const pi = #

语法规则: 指针指向的内容能通过指针来改变,但是指针变量本身的值是不可改
*pi=?; 正确 pi=&n;错误
3.const 放在*的左右两边
如const int* const pi = #
语法规则:由1,2推, 指针指向的内容不能能通过指针来改变,且是指针变量本身的值是不可改
9.指针运算
*指针+或-整数
在37.【C语言】指针(重难点)(B)中已提到一些内容
练习:因为数组在内存中连续存放,所以可以用指针打印数组
#include <stdio.h>
int main()
{int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };int* pi = &arr[0];int length=sizeof(arr)/sizeof(arr[0]);for (int i=0;i<length;i++){printf("%d ", *(pi+i));//注意pi不变}return 0;
}

*指针-指针(即地址-地址)
大地址-小地址 和 小地址-大地址 ,注意有正负
#include <stdio.h>
int main()
{int arr[10] = { 0,1,2,3,4,5,6,7,8,9 };printf("%d",&arr[8] - &arr);return 0;
}

总结:当两个指针指向同一个空间时,(指针-指针)的绝对值==指针之间的元素个数
进一步思考:
求字符串长度:
1.strlen函数
strlen(数组); 统计\0之前的元素个数
#include <stdio.h> int main() {char arr[] = { "asdfghjk" };size_t result=strlen(arr);printf("%d", result);return 0; }具体见20.5.【C语言】求长度(sizeof和strlen)的两种方式
2.用指针
未遇到\0则指针++
#include <stdio.h> int main() {char arr[] = { "asdfghjk" };char* pi = &arr;//&数组名就是&数组名[0]int result = 0;//可以简写成while (*pi) \0的ASCI值是0while (*pi != '\0')//未到\0则继续循环{result++;pi++;//指针移动}printf("%d", result);return 0; }
也可以改成指针-指针
printf("%d", pi-&arr);
*指针(大小)关系运算
可以用来打印数组
#include <stdio.h>
int main()
{int arr[] = { 0,1,2,3,4,5,6,7,8,9 };int* pi = &arr;int sz = sizeof(arr) / sizeof(arr[0]);while (pi < &arr[sz])//&arr[sz]越界不会产生影响{printf("%d ", *pi);pi++;}return 0;
}

往期推荐:
19.【C语言】指针(重难点)(A)
37.【C语言】指针(重难点)(B)
相关文章:
38.【C语言】指针(重难点)(C)
目录: 8.const 修饰指针 *修饰普通变量 *修饰指针变量 9.指针运算 *指针或-整数 *指针-指针 *指针关系运算 往期推荐 承接上篇37.【C语言】指针(重难点)(B) 8.const 修饰指针 const 全称 constant adj.不变的 *修饰普通变量 #…...
Vue-05.指令-v-for
v-for 列表渲染,遍历容器的元素或者对象的属性 v-for“列表元素名 in 列表名” <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-wi…...
自动驾驶的一些大白话讲解
无人驾驶牛逼吗?我来帮你祛魅【原理缺陷解析】_哔哩哔哩_bilibili 5分钟讲明白自动驾驶端到端,解释为什么华为智驾并不是遥遥领先 到底什么是端到端自动驾驶系统?为何我会说这是智能驾驶的弯道超车机会?我希望今天用5分钟的时间&…...
Python学习笔记--参数
目录 实参与形参 不定长参数 拆分参数列表 返回值 实参与形参 1. 定义函数时,带默认值的形参必须放在不带默认值的形参后面 下面程序的输出结果是( )。 def StudentInfo(country中国,name): print(%s,%s%(name,country)…...
刷题——大数加法
大数加法_牛客题霸_牛客网 string solve(string s, string t) {if(s.size() < t.size()) return solve(t, s);reverse(s.begin(), s.end());reverse(t.begin(), t.end());string ans;int d 0;//进位制for(int i0; i < s.size(); i){d s[i] - 0;//取得数字值if(i < …...
Pytorch人体姿态骨架生成图像
ControlNet是一个稳定扩散模型,可以复制构图和人体姿势。ControlNet解决了生成想要的确切姿势困难的问题。 Human Pose使用OpenPose检测关键点,如头部、肩膀、手的位置等。它适用于复制人类姿势,但不适用于其他细节,如服装、发型和…...
前端面试常考的HTML标签知识!!!
语义标签 标签名语义描述header网页头部网页的主要头部区域nav网页导航网页的导航链接区域footer网页底部网页的底部区域aside网页侧边栏网页的侧边栏区域section网页区块网页的独立区块 | article | 网页文章 | 网页的独立文章区域 | 字符实体 作用:在网页中显…...
Oracle触发器
Oracle触发器就是特定事件发生时自动执行的存储过程。 触发器基本使用 基本语法: create [or replace] trigger 触发器名称 alter | before | instead of [insert] [[or] update [of 列1,列2,...]] [[or] delete] on 表名 [referencing {OLD [as] old / NEW [as]…...
GPT-5:未来已来,我们如何共舞于智能新纪元?
GPT-5:未来已来,我们如何共舞于智能新纪元? 在科技日新月异的今天,人工智能(AI)的每一次飞跃都深刻地改变着人类社会的面貌。从AlphaGo击败围棋世界冠军,到GPT系列模型引领自然语言处理&#x…...
2024年6月 青少年机器人技术等级考试理论综合试卷(五级)
202406 青少年等级考试机器人理论真题五级 第 1 题 ESP32 for Arduino,通过引脚2读取按键开关的返回值,电路如下图所示,程序pinMode(2, mode);中,参数mode的值是?( ) A:INPUT B&…...
【Go】 HTTP编程3-路由httprouter
HttpRouter httprouter httprouter是第三方的库,不是go的标准库,使用命令 go get -u github.com/julienschmidt/httprouter ,下载该模块,-u表示如果已经下载但更新到最新版本Router 实现了http.Handler接口,为各种 re…...
Spring Boot 整合 SA-Token 使用详解
Spring Boot 整合 SA-Token 使用详解 在现代Web开发中,用户认证与授权是构建安全应用的基础。SA-Token是一个轻量级的Java权限认证框架,它以其简洁的API设计、高效的执行效率以及丰富的功能特性,成为了众多开发者在Spring Boot项目中实现用户…...
1.3 C 语言入门实战:从 Hello World 到基础语法解析
目录 1 程序的作用 2 初识 Hello World 2.1 新建项目 2.2 程序解释 3 printf 的作用 4 注释及其注意事项 4.1 单行注释 4.2 多行注释 4.3 嵌套错误 5 项目在磁盘上的位置 1 程序的作用 如下图所示,我们编写了一个可以做加法的程序,我们给程序…...
一文读懂什么是Go语言goroutine
1. 进程、线程和协程的区别 进程: 进程是具有一定独立功能的程序,进程是系统资源分配和调度的最小单位。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换…...
计算机毕业设计 农家乐管理平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...
Spring Boot优缺点
Spring Boot 是一款用于简化Spring应用开发的框架,它集成了大量常用的框架和工具,大大简化了Spring项目的配置和部署。下面是Spring Boot的优缺点: 优点: 简化配置:Spring Boot自动配置功能可以根据应用的依赖自动配…...
Android Studio中创建apk签名文件
本文以macOS中Android Studio 2021.1.1版本为例介绍创建apk签名文件的操作步骤: 1.启动Android Studio,并打开一个Android项目。 2.依次点击菜单:Build -> Generate Signed Bundle / APK...。 3.在弹出的"Generate Signed Bundle or …...
CRC32 JAVA C#实现
项目中用到CRC32进行校验得地方,需要用到C#和java进行对比: 一、C#实现: class CRC32Cls { protected ulong[] Crc32Table; //生成CRC32码表 public void GetCRC32Table() { ulong Crc; …...
本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——5Webscoket节点的使用
本科阶段最后一次竞赛Vlog——2024年智能车大赛智慧医疗组准备全过程——5Webscoket节点的使用 有了前面几篇文章的铺垫,现在已经可以实现我到手测试那一步的 1.解读usb_websocket_display.launch.py 首先进入这个目录/root/dev_ws/src/origincar/originca…...
深入学习小程序第二天:事件处理与用户交互
一、概念 1. 事件绑定与类型 在小程序中,通过在组件上添加特定的属性(如 bind 开头的属性)来绑定事件处理函数,以响应用户的交互操作。常见的事件类型包括触摸事件、表单事件和系统事件: 触摸事件:用于响…...
ROS1环境下Intel RealSense深度相机:从零部署到点云应用实战
1. 环境准备:从零搭建ROS1与RealSense开发环境 第一次接触ROS和深度相机的开发者,往往会卡在环境配置这一步。我当年用D435i做项目时,光是驱动兼容性问题就折腾了两天。下面这套配置流程经过多个项目验证,特别适合Ubuntu 18.04/20…...
比迪丽LoRA部署优化:TensorRT加速后推理速度提升300%实测
比迪丽LoRA部署优化:TensorRT加速后推理速度提升300%实测 1. 引言:当二次元老婆遇上推理加速 如果你玩过AI绘画,尤其是喜欢生成《龙珠》里的角色比迪丽,那你一定知道等待图片生成时的那种心情——看着进度条一点点爬,…...
QQ音乐加密文件自由播放全攻略:qmcdump工具深度应用指南
QQ音乐加密文件自由播放全攻略:qmcdump工具深度应用指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 一、…...
Unity 2018/2019下,Mega-Fires 3.48插件20种变形效果实测与避坑指南
Unity 2018/2019下Mega-Fires 3.48插件20种变形效果深度解析与实战避坑 在Unity 2018和2019版本中,Mega-Fires 3.48插件以其强大的Mesh变形能力吸引了大量开发者。这款插件提供了20种独特的变形效果,从基础的弯曲、扭曲到复杂的自由变形和翻页效果&#…...
【技术拆解】DCVC-RT:如何用五大创新让神经视频编码跑进实时时代?
1. 神经视频编码的实时化挑战 视频压缩技术发展到今天,已经进入了一个关键的转折点。传统视频编码标准如H.264、H.265已经接近理论极限,而基于神经网络的视频压缩方法虽然展现出更好的压缩效率,却一直受限于计算速度。这就好比一个天才厨师&a…...
KART-RERANK在.NET生态中的集成:为C#应用注入AI排序能力
KART-RERANK在.NET生态中的集成:为C#应用注入AI排序能力 你是不是也遇到过这样的场景?自己开发的C#应用里,有一个搜索或者推荐功能,用户输入关键词,系统返回一堆结果。但问题是,这些结果往往只是按照最基础…...
C语言运算符入门:零基础必学的5类核心运算符
对于编程入门而言,C语言是经典语言,运算符属于其最基础且最核心知识点当中的一个,后续去学习分支语句的时候,离不开对运算符的熟练运用,学习循环语句的时候,同样离不开对运算符使用熟练,学习函数…...
3MF插件全解析:Blender如何成为3D打印的得力助手?
3MF插件全解析:Blender如何成为3D打印的得力助手? 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 还在为Blender中无法处理3MF文件而烦恼吗&#…...
智谱开源手机AI框架实测:一句话让Open-AutoGLM帮你搜索、购物、发微信
智谱开源手机AI框架实测:一句话让Open-AutoGLM帮你搜索、购物、发微信 1. 什么是Open-AutoGLM? Open-AutoGLM是智谱AI开源的手机端智能助理框架,它能像真人一样操作你的手机。想象一下,你只需要说"帮我订个外卖"&…...
Swagger Client 与微服务架构:如何管理多个 API 端点的终极方案
Swagger Client 与微服务架构:如何管理多个 API 端点的终极方案 【免费下载链接】swagger-js Javascript library to connect to swagger-enabled APIs via browser or nodejs 项目地址: https://gitcode.com/gh_mirrors/sw/swagger-js 在现代微服务架构中&a…...

