指针由浅入深

1.变量与地址
2.指针与指针变量
3.直接访问和间接访问
4.空指针与野指针
5.空类型
6.定义与初始化的书写规则
7.指针运算
8.指针与数组
指针与一维数组
指针与二维数组
指针与字符数组
9.const与指针
10.指针数组和数组指针
11.多级指针

#include<stdio.h>
#include<stdlib.h>
int main()
{int i = 1;int *p;p = &i;//int *p = &i;  *是跟着int走的,类型是 int *  名字叫p(合法的标识符)float *q;double *d;char *c;printf("%d\n",sizeof(p));printf("%d\n",sizeof(q));printf("%d\n",sizeof(d));printf("%d\n",sizeof(c));//指针在某个平台下占用的大小是确定的
#if 0printf("%d\n",sizeof(i));printf("%d\n",sizeof(p));printf("i = %d\n",i);printf("&i = %p\n",&i);printf("p = %p\n",p);printf("&p = %p\n",&p);printf("*p = %d\n",*p);
#endifexit(0);
}

野指针

#include<stdio.h>
#include<stdlib.h>
int main()
{int *p = NULL;//空指针void *q = NULL;//void 类型的指针 不确定现在需要什么类型的指针exit(0);
}
#include<stdio.h>
#include<stdlib.h>
int main()
{int i = 1;//空指针int *p = &i;//void 类型的指针 不确定现在需要什么类型的指针int **q = &p;
// i *p **p
//&i  p  *qprintf("i = %d\n",i);printf("&i = %p\n",&i);printf("p = %p\n",p);printf("&p = %p\n",&p);printf("*p = %d\n",*p);printf(" q= %p\n",q);printf("*q = %p\n",*q);printf("**q = %d\n",**q);exit(0);
}

指针运算
& * 关系运算 ++ –

指针与一维数组

#include<stdio.h>
#include<stdlib.h>
int main()
{
//a[i]: a[i] = *(a+i) = *(p+i) = p[i]
//&a[i]: &a[i] = a+i = p+i = &p[i]
//a 和 p 的区别 a是数组名是常量  p是指针变量  a++ 报错 p++ 不报错
//*a = a[0]
//p++  p=p+1; p的指向发生变化
//p+1  p的指向没变
//数组名是对某连续空间的抽象  int a[3] = {1,2,3};int *p = a;int i;//for(i = 0;i <sizeof(a)/sizeof(*a);i++) for(i = 0;i <sizeof(a)/sizeof(a[0]);i++){printf("%p-->%d\n",&a[i],a[i]);	printf("%p-->%d\n",a+i,a[i]);	printf("%p-->%d\n",p+i,a[i]);	printf("%p-->%d\n",p+i,*(p+i));	}printf("\n");	exit(0);
}
#include<stdio.h>
#include<stdlib.h>
int main()
{int a[] = {5,7,8,2,3};int y;int *p = &a[1];;y = (*--p)++;  //(*--p) = (*--p) + 1  先赋值 再自增printf("y = %d\n",y);	//5printf("a[0] = %d\n",a[0]);	//6exit(0);
}

指针与二维数组

int main()
{int a[2][3] = {1,2,3,4,5,6};int i,j;int *p;printf("%p %p\n",a,a+1);// int *p; p = a; waring  行指针a  取* 相当于降级为列指针 *(a+i)+j// p = *(a) 或者 p = &a[0]b[0] a降级为列指针   p 只能在列上移动for(i = 0;i<2;i++){for(j = 0;j<3;j++){printf("%p->%d\n",&a[i][j],a[i][j]);printf("%p->%d\n",*(a+i)+j,*(*(a+i)+j));}printf("\n");}}

数组指针:存储类型 数据类型 (*指针名【下标】) = 值
int (*p)[3]; -> type name; -> int[3] *p;

int main()
{int a[2][3] = {1,2,3,4,5,6};int i,j;int *p = *a;int (*q)[3] = a;//声明了一个数组指针printf("%p %p\n",a,a+1);printf("%p %p\n\n",q,q+1);for(i = 0;i<2;i++){for(j = 0;j<3;j++){printf("%p->%d\n",&a[i][j],a[i][j]);printf("%p->%d\n",*(a+i)+j,*(*(a+i)+j));}printf("\n");}exit(0);
}

指针与字符数组

#include<stdio.h>
#include<stdlib.h>
int main()
{char *str = "hello";printf("%d %d\n",sizeof(str),strlen(str));//8 5//(F)  strcpy(str,"world");  此时动作为 world想要去覆盖str指向的常量 str = "world";//指针改变指向puts(str);//hello
/*char str[] = "hello";printf("%d %d\n",sizeof(str),strlen(str));//6 5区别 #if 0char str[] = "outputs";//F str = "inputs";//数组名是地址常量strcpy(str,"inputs");puts(str);
#endif/*char str[] = "hello world!";char *p = str+7;puts(str);puts(p);*/exit(0);
}

const 与指针

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

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

相关文章

CPU利用率使用教程

本文主要参考&#xff1a; 一文让你学到 nmon最详尽的用法 Linux性能监控命令_nmon 安装与使用 如果你是在Ubuntu上安装nmon&#xff0c;使用&#xff1a; apt install nmon安装好后&#xff0c;直接运行 $:nmon #运行如果是后台抓数据&#xff1a; -f 参数: 生成文件,文件…

python 虚拟环境多种创建方式

【一】说明介绍 &#xff08;1&#xff09;什么是虚拟环境 在Python中&#xff0c;虚拟环境&#xff08;Virtual Environment&#xff09;是一个独立的、隔离的Python运行环境&#xff0c;它拥有自己的Python解释器、第三方库和应用程序。通过创建虚拟环境&#xff0c;可以确…

【刷题(2)】矩阵

一、矩阵问题基础 遍历&#xff1a; for i in range(len(matrix[0])): for j in range(len(matrix): while 倒序遍历&#xff1a; for i in range(right,left,-1) 临时存储&#xff1a;temp w,h:len(matrix[0])-1 len(matrix)-1 left,right,top,bottom:0 len(matrix[0])-1 0 l…

Cesium 3DTileset Style 原理简析

Cesium 3DTileset Style 原理简析 应用层会看到这样的使用。那么原理是什么, 为啥写 height, 除了这个还有啥? const tileset await Cesium.Cesium3DTileset.fromUrl("../../public/tileset/building/tileset.json"); tileset.style new Cesium.Cesium3DTileSty…

HarmonyOS应用模型Stage基本介绍

文章目录 <font colorcoral> HarmonyOS应用模型概况<font colorcoral> Stage模型基本概念<font colorcoral> Stage模型UIAbiliry的生命周期<font colorcoral> Stage模型的配置文件<font colorcoral> 写在后面的话<font colorcoral>Referen…

学校NTP时钟系统(时间同步系统)方案助力建设智慧校园

学校NTP时钟系统&#xff08;时间同步系统&#xff09;方案助力建设智慧校园 学校NTP时钟系统&#xff08;时间同步系统&#xff09;方案助力建设智慧校园 建设智慧校园也意味着校内网络设备和服务器剧增&#xff0c;如何保障智慧校园内各数字系统时序一致、维稳运行成为一大难…

【八大排序算法】插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序

文章目录 一、排序的相关概念二、排序类型三、排序算法实现插入排序1.直接插入排序2.希尔排序 选择排序3.简单选择排序4.堆排序 交换排序5.冒泡排序6.快速排序递归实现非递归实现 7.归并排序递归实现非递归实现 8.计数排序 四、总结 一、排序的相关概念 排序&#xff1a;根据数…

WebLogic问题集

console登录后&#xff0c;页面显示卡顿 解决方法&#xff1a; 将Java的配置文件JAVA_HOME\jre\lib\securetty\java.security中的 securerandom.sourcefile:/dev/random修改为 securerandom.sourcefile:/dev/./random修改后&#xff0c;重启WLS即可。

【LAMMPS学习】八、基础知识(6.5)PyLammps 教程

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语&#xff0c;以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各…

[JAVASE] 类和对象(二)

目录 一. 封装 1.1 面向对象的三大法宝 1.2 封装的基本定义与实现 二. 包 2.1 包的定义 2.2 包的作用 2.3 包的使用 2.3.1 导入类 2.3.2 导入静态方法 三. static 关键字 (重要) 3.1 static 的使用 (代码例子) 3.1.1 3.1.2 3.1.3 3.1.4 四. 总结 一. 封装 1.1 面向对象…

推荐网站(9)pixabay免费可商用的图片、视频、插画、矢量图、音乐

今天推荐一款可以免费可商用的图片、视频、插画、矢量图、音乐的资源网站&#xff0c;这里面的所以东西都是免费的&#xff0c;并且可以商用。对那些做视频剪辑的人来说帮助非常大。它里面的资源非常的丰富&#xff0c;质量也高。 比如搜索下雨 链接直达&#xff1a;https://pi…

遇到Docker容器无法上网的问题时如何排查

当遇到Docker容器无法上网的问题时&#xff0c;可以通过以下步骤排查和解决&#xff1a; 检查Docker容器的网络模式&#xff1a; 确认容器的网络模式是否符合您的需求&#xff0c;使用 docker inspect <container_id> 查看网络配置。 检查Docker守护进程和容器的日志&am…

如何安装在系统中安装make命令

文章目录 WindowsMacUbuntuCentOS/Red Hat make是系统比较基础的命令&#xff0c;一般会自己携带&#xff0c;如果没有就手动安装一下吧。 Windows 从官网下载 make.exe Make for Windows 官网首页&#xff1a;https://www.gnu.org/software/make/ 下载地址&#xff1a;htt…

IT行业的革新力量:技术进步与未来展望

在当今时代&#xff0c;信息技术&#xff08;IT&#xff09;行业无疑是全球经济的重要推动力之一。随着数字化转型的不断深入&#xff0c;IT行业的边界正在扩大&#xff0c;它不仅包括传统的软硬件开发、网络建设和运维服务&#xff0c;还涵盖了云计算、大数据、人工智能&#…

我希望未来十年,Java可以变成这样的

ava&#xff0c;这位编程界的常青树&#xff0c;自1995年问世以来&#xff0c;一直是全球开发者的宠儿。随着技术的飞速发展&#xff0c;Java也在持续地自我革新。接下来&#xff0c;让我们来聊聊&#xff0c;未来十年Java可能会有哪些令人兴奋的变化。&#xff08;最重要的一点…

常用的启发式算法:探索问题解决的智慧之道

启发式算法是一种通过启发式信息来引导搜索的算法&#xff0c;常用于解决那些在合理时间内难以找到最优解的问题。本文将介绍几种常用的启发式算法&#xff0c;包括贪心算法、遗传算法和模拟退火算法&#xff0c;并提供Java代码实现及测试&#xff0c;帮助读者深入理解这些算法…

android设计模式-单例模式

转&#xff1a;https://www.jianshu.com/p/9c32aea34b6d 单例模式是运用最广泛的设计模式之一&#xff0c;在应用这个模式时&#xff0c;单例模式的类必须保证只有一个实例存在。多用于整个程序只需要有一个实例&#xff0c;通常很消耗资源的类&#xff0c;比如线程池&#xf…

如何申请免费一年SSL证书

申请免费一年的SSL证书可以通过以下几个步骤进行&#xff0c;这里以JoySSL为例&#xff0c;因为它是目前提供此类服务的流行平台之一&#xff0c;同时也提到了宝塔面板中的TrustAsia SSL证书。请根据您的具体需求选择合适的方式&#xff1a; 申请免费一年SSL证书&#xff1a; …

2024年为什么很多电商商家,都想涌入视频号,究竟是什么原因?

大家好&#xff0c;我是电商糖果 对电商有了解的朋友&#xff0c;在今年肯定发现一个现象&#xff0c;那就是很多商家对视频号比较青睐。 视频号究竟有何魔力&#xff0c;让越来越多的商家都想要入驻。 其实很简单&#xff0c;它让商家看到了市场。 视频号背后是谁&#xf…

【Vue】Vue指令与生命周期以及组件化编码

目录 常用内置指令v-text与v-htmlv-text : 更新元素的 textContentv-html : 更新元素的 innerHTML注意&#xff1a;v-html有安全性问题&#xff01;&#xff01;&#xff01;&#xff01; v-once与v-prev-oncev-pre ref与v-cloakrefv-cloak 自定义指令案例定义语法配置对象中常…