C语言---C指针+ASCII码

内存地址:内存中每个字节单位都有一个编号(一般用十六进制表示)

存储类型 数据类型 *指针变量名;int *p; //定义了一个指针变量p,指向的数据是int类型的。

访问指针所指向空间的内容用取内容运算符*
&:取地址符:取变量的地址

*:取内容符:取地址里面存放的内容
*&a=a;//*和&是互逆运算

&*a//错误(因为运算符优先级)

普通变量赋值

#include <stdlib.h>
int main()
{int a = 5;int *p = &a;char c='v';char *q=&c;printf("%p %p\n", p, &a);//p为a的地址printf("%p %p\n",q,&c);//q为c的地址printf("%d %d\n",a,*p);//*p是取地址中的值printf("%c %c\n",c,*q);//*q取地址中的值printf("Hello, World");return(0);
}

注意:指针变量使用前不仅要定义,还要初始化。未初始化的指针变量不能随便使用,不然可能会产生野指针。

通过改变指针指向,改变值

	int a=10;int *p=&a;int *q=p;printf("%d %d %d\n",a,*p,*q);//10 10 10*q=20;//通过指针改变变量a的值printf("%d %d %d\n",a,*p,*q);//20 20 20

数组

在这里插入图片描述

1.数组的首地址赋值给指针变量

char s[10]="hello";
char *p = s;
int arr[5]={1,2,3,4,5};
int *q=arr;
printf("%c\n",*p);//h
printf("%d\n",*q);//1

2.指针加减操作其实就是让指针向前向后移动
(1)char 移动1

	char str[32]="hello";char *p=str;printf("%c\n",*p);//hp++;printf("%c\n",*p);//ep--;printf("%c\n",*p);//h

(2)int 移动4
double 移动 8
偏移了多少字节=n*sizeof(数据类型)

char str[32]="hello";int *p=str;printf("%c\n",*p);//hp++;printf("%c\n",*p);//op--;printf("%c\n",*p);//h

运算方法
(1)++和*都是单目运算符

(2)单目运算符从右向左运算

(3)++在前是先移动再取值,++在后是先取值再移动。

    int x[] = {10, 20, 30};
int *px = x;
printf("%d,", ++*px);//11
printf("%d\n%d", *px,x[0]);//11 

这个++*px把数组里的值给改了

int x[] = {10, 20, 30};
int *px = x;
printf("%d,", ++*px);//11
printf("%d\n", *px); //11
px = x;
printf("%d,", (*px)++);//11  先取值再+1,所以直接打印x[0]的值,然后再x[0]=11+1=12
printf("%d\n", *px);//12
px = x+1;
printf("%d,", *px++);//20 先取值再移位
printf("%d\n", *px);//30
px = x+1;
printf("%d,", *++px);//30 先移位再取值
printf("%d\n", *px);//30

二维数组

int a[2][3]={1,2,3,4,5,6};

a是数组名,表示第一行的首地址。

a+1表示第二行的首地址,以此类推。

在a前面加*,表示将行地址降级称为列地址。

*a;//第一行第一列的地址

*a+1;//第一行第二列的地址

*(a+1);//第二行第一列的地址

*(a+1)+1;//第二行第二列的地址
原文链接:https://blog.csdn.net/weixin_43624626/article/details/130715839
在这里插入图片描述

二级指针

存放指针的地址

int a = 10;int *p = &a;int **q = &p;

数组指针

本质还是指针,指向的是数组(又称为行指针)
存储类型 数据类型(* 指针变量名)[列数];

例如:

int a[2][3]={1,2,3,4,5,6};

int (*p)[3]=a;

p可以代替进行元素访问,但本质不同,p是指针变量,a是地址常量。

把p进行运算的时候,例题中情况要3个单位3个单位进行运算。

ASCII

A-65
a-97
相差32
在这里插入图片描述

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

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

相关文章

LeetCode —— 只出现一次的数字

只出现一次的数字 I 本题依靠异或运算符的特性&#xff0c;两个相同数据异或等于0&#xff0c;数字与0异或为本身即可解答。代码如下: class Solution { public:int singleNumber(vector<int>& nums) {int ret 0;for (auto e : nums){ret ^ e;}return ret;} };只出…

自学前端——JavaScript篇

JavaScript 什么是JavsScript JavaScript是一种轻量级、解释型、面向对象的脚本语言。它主要被设计用于在网页上实现动态效果&#xff0c;增加用户与网页的交互性。 作为一种客户端语言&#xff0c;JavaScript可以直接嵌入HTML&#xff0c;并在浏览器中执行。 与HTML和CSS不…

JavaScript语法特性篇-动态导入 import()

1、基本使用 import() 语法&#xff0c;通常被称为动态导入&#xff0c;是一个类似函数的表达式&#xff0c;它允许异步和动态地将 ECMAScript 模块加载到一个可能不是模块的环境中。 与声明式的导入相对应&#xff0c;动态导入只在需要时进行计算&#xff0c;并且允许更大的…

Vue脚手架插槽 slot 学习

slot插槽 <slot></slot> 1. 默认插槽 引入&#xff1a;原本的分类组件是显示的文字&#xff0c;但现在某些需要换成图片 / 视频&#xff0c;用很多的 v-show 去控制就很麻烦 作用&#xff1a;直接把组件标签中的所有内容放到想要放的位置 App.vue <templa…

数据模型(models)

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 &#xff08;1&#xff09;在App中添加数据模型 在app1的models.py中添加如下代码&#xff1a; from django.db import models # 引入django.…

Qt开发 | Qt界面布局 | 水平布局 | 竖直布局 | 栅格布局 | 分裂器布局 | setLayout使用 | 添加右键菜单 | 布局切换与布局删除重构

文章目录 一、Qt界面布局二、Qt水平布局--QHBoxLayout三、Qt竖直布局四、Qt栅格布局五、分裂器布局代码实现六、setLayout使用说明七、布局切换与布局删除重构1.如何添加右键菜单2.布局切换与布局删除重构 一、Qt界面布局 Qt的界面布局类型可分为如下几种 水平布局&#xff08;…

谐波减速器行业发展速度有望加快 工业机器人领域为其最大需求端

谐波减速器行业发展速度有望加快 工业机器人领域为其最大需求端 谐波减速器指通过增大转矩、降低转速等方式实现减速目的的精密传动装置。谐波减速器具有轻量化、体积小、承载能力大、精度高、可靠性高、运行噪音小等优势&#xff0c;广泛应用于工业机器人、半导体制造、精密医…

AWS中国云配置强制MFA策略后导致AWS CLI和IDEA中无法使用问题

问题 之前的文章《AWS中国IAM用户强制使用MFA》&#xff0c;启用必须使用MFA策略才能使用AWS服务。但是&#xff0c;开启之后&#xff0c;遇到了本地开发环境的IDEA和AWS CLI不能正常调用ssm的配置中心问题。 解决思路 在本地配置文件中&#xff0c;配置使用能够正常使用ssm…

web开发前后端分离

文章目录 1.广义上的前后端分离 1.广义上的前后端分离 优点&#xff1a; 1.前后端分离&#xff0c;便于后期维护;2.前端服务器只需要返回静态界面&#xff0c;后端服务器只提供增删查改的数据返回&#xff0c;把数据的转换逻辑的处理压力转移到了客户端;

Eureka服务发现机制解析:服务实例的唯一标识

引言 Eureka是Netflix开源的服务发现框架&#xff0c;它是Spring Cloud体系中的核心组件之一。在微服务架构中&#xff0c;服务实例的动态注册与发现是实现服务间解耦和通信的关键。Eureka通过提供服务注册中心&#xff0c;使得各微服务实例能够注册自己并发现其他服务实例。本…

Android Java、NDK/JNI、C++打印log

目录 一、Java上层打印log二、Android Studio NDK/JNI中打印log2.1 示例2.2 log类型 三、Native层打印LOG3.1 Liblog 库3.2 Liblog的用法3.3 输出ALOGV等级的log3.4 FUNCTION与func的区别 一、Java上层打印log Android的Java程序直接调用android.util.Log类来输出Log即可。 Lo…

MySQL 8版本的新功能和改进有哪些?(MySQL收藏版)

目录 1. 简单介绍 2. 发展历史 3. MySQL 8产品特性 4. 数据库性能重点分析 1. 原生 JSON 支持改进 2. 隐式列优化 3. 改进的查询优化器 4. 并行查询 5. 分区表改进 MySQL 是一个流行的开源关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;由瑞典公司 M…

了解SD-WAN与传统WAN的区别

近年来&#xff0c;许多企业选择了SD-WAN作为他们的网络解决方案。云基础架构的SD-WAN不仅具备成本效益&#xff0c;而且提供更安全、更可靠的WAN连接&#xff0c;有助于实现持续盈利。客户能够更好地控制他们的网络&#xff0c;个性化定制且无需额外成本。 那么&#xff0c;为…

服务器数据恢复—raid故障导致部分分区无法识别/不可用的数据恢复案例

服务器数据恢复环境&#xff1a; 一台某品牌DL380服务器中3块SAS硬盘组建了一组raid。 服务器故障&#xff1a; RAID中多块磁盘出现故障离线导致RAID瘫痪&#xff0c;其中一块硬盘状态指示灯显示红色。服务器上运行的数据库在D分区&#xff0c;备份文件存放在E分区。由于RAID瘫…

LabVIEW火箭发动机试车台程序

火箭发动机试车台是火箭发动机研制过程中的关键环节之一&#xff0c;通过模拟实际工作环境对发动机进行测试&#xff0c;确保其性能和可靠性。随着科研需求的不断变化和技术的进步&#xff0c;对试车台的灵活性、可靠性和易维护性提出了更高的要求。基于LabVIEW开发的试车台程序…

[信号与系统]模拟域中的一阶低通滤波器和二阶滤波器

前言 不是学电子出身的&#xff0c;这里很多东西是问了朋友… 模拟域中的一阶低通滤波器传递函数 模拟域中的一阶低通滤波器的传递函数可以表示为&#xff1a; H ( s ) 1 s ω c H(s) \frac{1}{s \omega_c} H(s)sωc​1​ 这是因为一阶低通滤波器的设计目标是允许低频信…

什么是深拷贝,什么是浅拷贝

在计算机科学中&#xff0c;特别是涉及到编程语言如JavaScript、Java、C等时&#xff0c;我们经常遇到“深拷贝”和“浅拷贝”这两个概念。它们都与对象的复制有关&#xff0c;但处理方式不同。 浅拷贝 (Shallow Copy): 浅拷贝只复制对象的顶层属性&#xff08;或称为“引用”…

go switch 与 interface

go switch 与 interface 前言 前言 github.com/google/cel-go/common/types/ref type Val interface {// ConvertToNative converts the Value to a native Go struct according to the// reflected type description, or error if the conversion is not feasible.ConvertTo…

05-java基础——循环习题

循环的选择&#xff1a;知道循环的次数或者知道循环的范围就使用for循环&#xff0c;其次再使用while循环 猜数字 程序自动生成一个1-100之间的随机数&#xff0c;在代码中使用键盘录入去猜出这个数字是多少&#xff1f; 要求&#xff1a;使用循环猜&#xff0c;一直猜中为止…

时序预测 | Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于CNN-BiLSTM-Attention多变量时间序列多步预测&#xff1b; 2.多变量时间序列数据集&#xff08;负荷数据集&#xff09;&#xff0c;采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据&…