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)
上一篇 2022年8月30日 上午11:46
下一篇 2022年8月30日 上午11:46


相关推荐

  • pycharm打包依赖环境

    pycharm打包依赖环境背景 项目多了 有时候依赖版的版本容易冲突和混淆调通之后保存成 requirements txt 方便以后的使用 importosimpo 找到当前目录 project root os path dirname os path realpath file print project root 找到解释器 虚拟环境目录 python root sys exec prefixprint python root 拼接生成 requirements 命令

    2026年3月17日
    2
  • join方法的使用

    join方法的使用一、join方法1.1jon方法的作用使所属的线程对象x正常执行run()方法中的任务,而使当前线程y无限期的阻塞,直到x线程销毁后再继续执行线程y后面的代码。join方法具有使线程排队运行的作用,有些类似同步的运行的效果。1.2join与synchronized的区别join在内部使用wait()方法进行等待,而synchronized关键字使用的是”对象监视器”原理作为同步。…

    2022年6月11日
    49
  • kafka基础教程_spark kafka

    kafka基础教程_spark kafka一、基本概念Kafka™用于构建实时数据流水线和流媒体应用,具有水平可扩展性,容错性,并在数千家公司得到了应用。流媒体平台(streamingplatform)有三个关键功能:1.发布和订阅记录流。在这方面,类似于消息队列或企业消息系统。2.以容错方式存储记录流。3.实时处理记录流。Kafka被用于两大类应用程序:1.构建可在系统或应用程序之间可靠获取数据的

    2022年10月16日
    5
  • AD中测量两点之间的距离

    AD中测量两点之间的距离

    2021年6月21日
    96
  • python京东自动签到领金豆_github京东自动签到

    python京东自动签到领金豆_github京东自动签到一.介绍PhantomJS是一个基于WebKit的JavaScriptAPI,它使用QtWebKit作为它核心浏览器的功能,使用WebKit来编译解释执行JavaScript代码,任何你可以在基于WebKit浏览器做的事情,它都能做到。Selenium是一个用于Web应用自动化程序测试的工具,可以让浏览器自动加载页面,获取需要的数据,Selenium自己不带浏览器,所以需要和PhantomJS、…

    2025年12月3日
    4
  • linux服务器 抓包命令 tcpdump

    linux服务器 抓包命令 tcpdumptcpdump-iany-s0-w/home/tcp.pcap单独总结tcpdump抓包的常用命令主要语法过滤主机/IP:  tcpdump-ieth1host172.16.7.206 抓取所有经过网卡1,目的IP为172.16.7.206的网络数据    过滤端口:  tcpdump-ieth1dstport1234 抓取所有经…

    2022年8月20日
    14

发表回复

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

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