c++常量指针和指针常量_指针指向二维数组

c++常量指针和指针常量_指针指向二维数组**一:常量**常量指针,指针常量,常量指针常量a)常量定义:不可修改的值,例如250,’A’b)const关键字功能:将变量常量化,四种形式(1)const可以修饰普通变量,一旦修饰该变量,该变量就当做常量看待,不可再更改Constinta=250;//将变量a常量化A=200;//gcc编译器报错(2)常量指针:不能通过指针变量来修改指向的内存区域的数据,主要…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

**

一:常量

**
常量指针,指针常量,常量指针常量

a)常量定义:不可修改的值,例如250,’A’
b)const关键字功能:将变量常量化,四种形式

(1)const可以修饰普通变量,一旦修饰该变量,该变量就当做常量看待,不可再更改

 Const int a=250;//将变量a常量化
 A=200;//gcc编译器报错

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)常量指针:不能通过指针变量来修改指向的内存区域的数据,主要目的是保护数据不可篡改
不能改指针指向的内容,可以改指针的地址

例如 int a=250;
	 Const int *pa=&a;//定义初始化一个常量指针
	 
或者 int a=250;
Int const *pa=&a; //定义初始化一个常量指针

*pa=200;//gcc编译报错
Printf(“a=%d\n”,*pa);//可以查看


int b=300;
 pa=&b;//pa重新指向b变量,可以修改指针变量本身保存的地址
*pa=400;//gcc编译报错

在这里插入图片描述

(3)指针常量(不太用)
指针永远指向一块内存区域,不能再指向别的内存,但是可以修改指针内存的值

例如:
int a=100;
int *  const  pa=&a;//定义指针常量
*pa=300;//可以
printf("a=%d\n",*pa);
int b=200;
*pa=&b;//不可以,gcc报错	
printf("a=%d\n",*pa);	

(4)常量指针常量:指针本身和指向的内容都不可修改
在这里插入图片描述

**

二、无数据类型指针:void *

**
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
经典指针操作案列

int a=0x12345678;
int *p=&a;
printf("%#x\n",*p);//获取4个字节数据并且按照十六进制打印输出

4个字节,十六进制每两个数字是一个字节,左是高字节,右是低字节
在这里插入图片描述

**

如何做到操作访问4字节中的 某1个字节或者某2个字节数据呢?

**
操作方式:
方式1:采用有数据类型指针来获取1字节,2字节(可复制 代码在后面)
在这里插入图片描述
在这里插入图片描述
方式2:采用无类型指针void*来获取1字节,2字节,4字节(可复制的代码在后面)
在这里插入图片描述
在这里插入图片描述
两种方式代码如下:
方式1代码

  #include<stdio.h>
  int main()
  {
      int  a=0x12345678;
      //1、一次性获取4字节数据
      int *p=&a;
      printf("a=%#x\n",*p);//一次性获取全部四字节数据
      printf("**************\n");
  //利用有数据类型指针来获取1字节,2字节数据
  //2、获取一字节数据
  char *p1=(char *)&a;//将a的int型指针强制转化为char类型的指针
  printf("a=%#x\n",*p1++);//0x78
  printf("a=%#x\n",*p1++);//0x56
  printf("a=%#x\n",*p1++);//0x34
  printf("a=%#x\n",*p1++);//0x12
  printf("**************\n");
  //3、获取2字节
  short *p2=(short *)&a;//将a的int型指针强制转化为short类型的指针
  printf("a=%#x\n",*p2++);//0x5678
  printf("a=%#x\n",*p2++);//0x1234
}

方式2代码

#include<stdio.h>
int main()
{
    int b=0x12345678;
    void *p3=&b;
    //1、获取1字节数据
    char *p4=(char  *)p3;
    printf("%#x\n",*p4++);//打印方式1
    printf("%#x\n",*p4++);
    printf("%#x\n",*p4++);
    printf("%#x\n",*p4++);
    printf("%#x\n",*(char *)(p3+0));//打印方式2(也可以直接强转)
    printf("%#x\n",*(char *)(p3+1));
    printf("%#x\n",*(char *)(p3+2));
    printf("%#x\n",*(char *)(p3+3));
    printf("************************\n");
    //2、获取两字节
    short *p5=(short *)p3;
    printf("%#x\n",*p5++);
    printf("%#x\n",*p5++);
    printf("%#x\n",*(short *)(p3+0));
    printf("%#x\n",*(short *)(p3+2));
    printf("************************\n");
    //3、获取字节
    int *p6=(int *)p3;
    printf("%#x\n",*p6);
    printf("%#x\n",*(int *)p3);
  }
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179185.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Git使用流程_git指南

    Git使用流程_git指南git命令安装git要检查是否安装了Git,在cmd终端运行:$gitversiongitversion2.27.0.rc1.windows.1配置git我们只需要配置一些东西gitconfig–globaluser.name”前端xx”#你的名字gitconfig–globaluser.emailxx@qq.com#你的邮箱name和email对应上就设置好了提交到github电脑git要登github账号;提

    2022年9月2日
  • 使用深度图重建世界坐标

    使用深度图重建世界坐标参考网址:https://blog.csdn.net/puppet_master/article/details/77489948首先建立一个绘制世界坐标的项目。保证物体的顶点在0到1范围之内,这样颜色能够有意义的表示物体的世界坐标位置。然后编写一个shader,用于绘制世界坐标位置:Shader&amp;amp;amp;amp;amp;amp;amp;quot;Unlit/DrawWorldPoint&amp;amp;amp;amp;amp;amp;amp;quo

    2022年5月8日
  • python中字符串转成数字的几种方法[通俗易懂]

    python中字符串转成数字的几种方法[通俗易懂]在python列表操作中,面对需要把列表中的字符串转为礼拜的操作,无需强转,通过简单的几步就可以实现,本文介绍python中字符串转成数字的三种方法:1、使用join的方法;2、使用int函数将16进制字符串转化为10进制整数;3、使用列表生成式进行转换。方法一:使用join的方法num_list=[‘1′,’2′,’3’]str_list=”.join(num_str)#把列表中的元素连起来print(int(str_list))输出123方法二:使用int函数将16进制

    2022年10月22日
  • PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法

    PHP网站从Apache转移到Nginx后产生404错误的原因和解决办法

    2021年10月9日
  • MySQL字段类型

    MySQL字段类型MySQL字段类型

    2022年4月23日
  • android从activity跳转到fragment解决

    android从activity跳转到fragment解决背景:我的问题是在主页面出现的,硬是要从跳过好几层的Activity中点击一下就要跳到主页面中的任意一个fragment页面。Activity跳转到Fragment首先我试过广播是不好使的,因为会出现……afteronsaveInstance错误。处理:Activity跳到fragment

    2022年5月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号