首页 > 其他分享 >08_指针

08_指针

时间:2023-07-21 18:00:10浏览次数:27  
标签:arr 变量 int 08 地址 数组 指针

指针

内存的概述

在32位平台,每一个进程有4G的空间

系统为内存的每一个字节分配一个32位的地址编号

指针变量的定义

定义步骤-

*修饰指针变量p

保存谁的地址 就先定义谁

指针变量的详解

在32 位平台任何类型的指针变量都是4字节

在64位平台位8字节

p====>变量地址

*p===>变量值

指针变量初始化

int *p = NULL;// int *p; p = NULL

指针变量的类型

指针变量自身的类型

将指针变量名拖黑,剩下的类型就是指针变量自身的类型

int *p; //p自身的类型为 int *

指针变量指向的类型

将指针变量名和离他最近的一个* 一起拖黑, 剩下的类型就是指针变量指向的类型

int *p; //p指向的类型为 int

tips:

&和* 相遇 从右往左 依次抵消

*&p == p

指针变量的指向类型决定了取值宽度

int num = 0x01020304; //倒着存倒着取

image-20230717223229176

指针变量的指向类型决定了+1跨度

image-20230717224027040

image-20230717224536920

image-20230717233347986

image-20230717233629025

指针变量的注意项

void不能定义普通变量

void num; //不能给num开辟空间

void * 可以定义指针变量

void *p; //可以的

p 就是万能的一级指针变量, 能保存任意一级指针的地址编号

image-20230717234244654

但是它不能直接用

image-20230717234734872

指针变量不要越界访问

image-20230718170427492

数组元素的指针变量

int arr[5] = {10, 20, 30, 4}
int *p = &arr[0]; //p == &arr[0] == arr,*p = arr[0] == *arr

字符串与指针

字符数组

char str1[128] = "hello world";
sizeof(str1); //128字节

字符数组先开辟128字节,然后把hello world放入,可以读取

字符串指针变量

char *str2 = "hello world";
sizeof(str2); //4字节 或 8字节

image-20230718185447556

字符串指针变量存放的字符串放在文字常量区,只能读不能取

指针数组

数值的指针数组

image-20230718232703235

image-20230718233519927

字符的指针数组

image-20230718233924880

image-20230718234338681

字符指针数组和二维字符数组区别

image-20230718234609992

指针的指针

int num = 10; //0级
int *p = # //1级
int **q = &p; //2级

n级指针变量可以保存n-1 级的地址

image-20230718235042339

数组指针

数组首元素地址 和 数组首地址

int arr[5] = {10, 20, 30, 40, 50};

数组首元素的地址: &arr[0] == arr (+ 1跳过一个元素)

image-20230719162844288

数组的首地址: &arr (+1跳过整个数组)

image-20230719164933823

数组首元素地址编号 和 数组的首地址编号一致

int arr[5] = {10, 20, 30, 40, 50};
int (*p)[5] = &arr; //数组指针

image-20230720155906468

数组首地址取* == 数组首元素地址

image-20230720172201683

标签:arr,变量,int,08,地址,数组,指针
From: https://www.cnblogs.com/mzx233/p/17572115.html

相关文章

  • P2900 [USACO08MAR] Land Acquisition G
    P2900[USACO08MAR]LandAcquisitionG题意FarmerJohn准备扩大他的农场,眼前他正在考虑购买\(N\)块长方形的土地。如果FJ单买一块土地,价格就是土地的面积。但他可以选择并购一组土地,并购的价格为这些土地中最大的长乘以最大的宽。比如FJ并购一块\(3\times5\)和一块......
  • windows 2008r2开启cpu虚拟化
    Windows2008R2开启CPU虚拟化介绍在虚拟化技术中,CPU虚拟化是其中一个关键的部分。它允许虚拟机在物理主机上运行,同时有效地共享主机的CPU资源。本文将介绍如何在WindowsServer2008R2中开启CPU虚拟化功能,并提供相应的代码示例。背景WindowsServer2008R2是一款广泛使用的......
  • 黑魂 208 角色管理与战斗管理的链接
    把敌人的自己的武器tag改成Weapon,玩家的武器范围(Radius)改成3.5。在BattleManager的OnTriggerEnter里写上判断武器的代码:if(col.tag=="Weapon"){am.DoDamage();  对应下面的DoDamage被武器接触后执行的DoDamage函数。;}在ActorManager脚本下面新增一个函数:......
  • hdu6089 Rikka with Terrorist
    \(n\timesm\)网格图,给一个指定的点集\(S\),\(q\)次询问(\(n,m,q,|S|\le10^5\)),给定一个点\((x,y)\),问有多少个目标点\((x',y')\)满足\[\not\exist(x_0,y_0)\inS:x_0\in[\min(x',x),\max(x',x)],y_0\in[\min(y',y),\max(y',y)]\]图都是......
  • 智能指针初探
    智能指针是C++11引入的,比裸指针更为强大的指针。主要作用是用来完成一定程度上的内存资源管理自动化。unique_ptrunique_ptr实现专属所有权功能。unique_ptr不允许拷贝,只允许移动,保证了没有其他的指针指向unique_ptr指向的对象。unique_ptr被析构时,其析构函数会主动析构所指向的......
  • CF1083F The Fair Nut and Amusing Xor
    简要题意:给你两个序列\(a,b\),一次操作可以将\(a\)的某一个长度为\(k\)的子区间全部异或上任意值,\(f(a,b)\)为使得\(a\)和\(b\)相同的最少的操作数量。支持单点修改\(a,b\),并在开头和每次修改后输出\(f(a,b)\)的值。\(n,k,q\le2\times10^5,w\le2^{14}\)。题解......
  • 08python离线安装requests需要安装的依赖库
    requests安装有依赖的包版本,如下:certifi[required:>=2017.4.17]#CA认证模块urllib3[required:!=1.25.0,!=1.25.1,<1.26,>=1.21.1’]#线程安全HTTP库idna[required:<2.9,>=2.5]#国际化域名解析模块chardet[required:❤️.1.0,>=3.0.2]#通用字符编码检测器模块......
  • 关于this指针你知道多少?
    JavaScript中的this指针是一个非常重要且常见的概念。理解this指针的原理、优缺点和应用场景对于编写高效且健壮的JavaScript代码至关重要。本文将深入探讨this指针的相关内容。一、this指针的原理在JavaScript中,this是一个特殊的关键字,它在函数内部使用,用于指向调用该函数的对......
  • MIT 6.S081 Thread switching
    Multiplexingxv6通过将cpu从一个进程切换到另一个进程来实现multiplex(多路复用),进程的切换会在两种情形下发生:xv6的sleep与wakeup机制在进程等待IO完成或者等待子进程退出又或者在sleep系统调用中等待的时候切换进程。xv6会周期性地强制切换进程,从而应对那些长时......
  • 20090408_每年放生750次 嚴重威脅生態環境(報導)
    根據台灣動物社會研究會的調查,台灣每年宗教放生活動高達750次,平均每天2.1次。調查統計,被放生的動物中有不少是外來物種,嚴重威脅生態環境。台灣動物社會研究會今天召開記者會,公布2009年「台灣放生現象調查」結果指出,經常被放生動物的地點不乏熱門景點,像是淡水漁人碼頭、日月潭、旗......