C语言中关于指针的理解及用法

news/2024/7/27 12:12:07/文章来源:https://blog.csdn.net/lzcandhyandcg/article/details/135587521

关于指针意思的参考:icon-default.png?t=N7T8https://baike.baidu.com/item/%e6%8c%87%e9%92%88/2878304

 指针 = 指针变量 = 地址 

野指针

野指针就是指针指向的位置是不可知的(随机的,不正确的,没有明确限制的)

以下是导致野指针的原因

1.指针未初始化

int main()
{int *p;*p=20;return 0;
}

 在这里面*p没有初始化,所以默认为随机值,我们也把这样的指针叫做野指针

我们之后把20赋给*p显然是行不通的,因为指针指向的是一个地址而非值,正确的赋值方法应该是这样的:

int *p,a=20;p=&a;

 2.指针越界

int main()
{int s[10]={0};int *p=s,a;for(a=0;a<=11;a++){*p=a;p++;printf("%d\n",*p);}return 0;
}

在这串代码中,我们把数组s赋给了指针p, 而s里面只能存放10个值,我们现在用for循环,让a在s里面存了12个值,当指针指向的范围超出数组s时,这个指针就被叫做野指针

 指针的一般用法

#include<stdio.h>
int main()
{int i=1;    //i占4个字节int *p=&i;  return 0;
}

  这里的 * 代表着p是指针变量,int代表p指向的i是整型的

#include<stdio.h>
int main()
{int i=5;int s[10]={1,2,3,4,5,6,7,8,9,10};int *pa=&i;int *pb=s;int *pc=&s[3];printf("%d\n",*pa);printf("%d\n",*pb);printf("%d\n",*pc);return 0;
}

 我们在使用指针的时候要注意:

如果要把指针指向一个变量,我们在定义的时候就只用在变量前面加个 &(取地址符) 就行了

如果指向的是数组,我们可以直接把数组名给指针,就像*pb=s,这样输出的时候就默认是数组的第一个数,如果我们要指向数组中其他元素,就要用 & + 要取的数组下标 *pc=&s[3]。

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

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

相关文章

力扣每日一练(24-1-13)

如果用列表生成式&#xff0c;可以满足输出的型式&#xff0c;但是不满足题意&#xff1a; nums[:] [i for i in nums if i ! val]return len(nums) 题意要求是&#xff1a; 你需要原地修改数组&#xff0c;并且只使用O(1)的额外空间。这意味着我们不能创建新的列表&#xff…

【java八股文】之Spring系列篇

【java八股文】之JVM基础篇-CSDN博客 【java八股文】之MYSQL基础篇-CSDN博客 【java八股文】之Redis基础篇-CSDN博客 【java八股文】之Spring系列篇-CSDN博客 【java八股文】之分布式系列篇-CSDN博客 【java八股文】之多线程篇-CSDN博客 【java八股文】之JVM基础篇-CSDN博…

ES6(ECMAScript 6.0)

ES6 学习链接ES6什么是ES6&#xff1f;ECMAScript 和 JavaScript 的关系 ECMAScript各版本新增特性ES6 块级作用域 let 学习链接 ES6简介 ECMAScript简介及特性&#xff08;科普&#xff01;很详细&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 20分钟上手ES…

OpenHarmony基于HDF简单驱动开发实例

OpenHarmony基于HDF简单驱动开发实例 背景 OpenHarmony-3.0-LTS qemu_small_system_demo liteos_a qemu 添加配置 device/qemu/arm_virt/liteos_a/hdf_config/device_info/device_info.hcs device_info 新增&#xff1a; sample_host :: host {hostName "sample…

Docker 配置国内镜像源加速

1. 国内镜像源总览 名称路径中国官方镜像https://registry.docker-cn.com网易163镜像http://hub-mirror.c.163.com中科大镜像https://docker.mirrors.ustc.edu.cn阿里云镜像https://[xxx].mirror.aliyuncs.com 2. 阿里云镜像源 地址&#xff1a;https://cr.console.aliyun.c…

基于Java SSM框架实现医院管理系统项目【项目源码】计算机毕业设计

基于java的SSM框架实现医院管理系统演示 SSM框架 当今流行的“SSM组合框架”是Spring SpringMVC MyBatis的缩写&#xff0c;受到很多的追捧&#xff0c;“组合SSM框架”是强强联手、各司其职、协调互补的团队精神。web项目的框架&#xff0c;通常更简单的数据源。Spring属于…

尼科彻斯定理----C语言

大家好我是Beilef许久未见了&#xff0c;小弟学校考试刚结束。这个过程懂的都懂。痛------ 文章目录 目录 文章目录 前言(一不好懂可以直接跳到二&#xff09; 一、尼科彻斯定理是什么&#xff1f; 二、尼科彻斯定理解析 这是ai的回答 尼科彻斯定理&#xff08;Nikomačs theor…

计算机网络 —— 数据链路层

数据链路层 3.1 数据链路层概述 数据链路层把网络层交下来的数据构成帧发送到链路上&#xff0c;以及把收到的帧数据取出并上交给网络层。链路层属于计算机网络的底层。数据链路层使用的信道主要由以下两种类型&#xff1a; 点对点通信。广播通信。 数据链路和帧 链路&…

京东年度数据报告-2023全年度笔记本十大热门品牌销量(销额)榜单

2023年度&#xff0c;在电脑办公市场整体销售下滑的环境下&#xff0c;笔记本市场的整体销售也不景气。 根据鲸参谋平台的数据显示&#xff0c;京东平台上笔记本的年度销量为650万&#xff0c;同比下滑约16%&#xff1b;销售额约为330亿&#xff0c;同比下滑约19%。同时&#…

基于ssm的实验室排课系统论文

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对信息管理混乱&#xff0c;出错率高&#xff0c;信息安全性差&#x…

【k8s】Kubernetes 声明式 API、命令式

1. 资源管理方式&#xff1a; 1>. 命令式对象管理∶直接使用命令去操作kubernetes资源 kubectl run nginx-pod --imagenginx:1.17.1 --port802>. 命令式对象配置∶通过命令配置和配置文件去操作kubernetes资源 kubectl create/patch -f nginx-pod.yaml3>. 声明式对…

CSS 选择器全攻略:从入门到精通(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

环境变量详细说明

Windows之系统环境变量 配置操作&#xff1a; 计算机→属性→高级系统设置→高级→环境变量 系统变量→新建&#xff1a;JAVA_HOME 变量值&#xff1a;C:\Program Files\Java\jdk1.8.0_121 系统变量→Path→编辑&#xff1a;在变量值最后输入 &#xff1a;%JAVA_HOME%\bin;%J…

Linux基础工具的使用(yum,vim,gcc,g++,gdb,make/makefile)【详解】

目录 linux软件包管理器-yum什么是软件包&#xff1f;查找软件包如何安装软件卸载软件 linux编辑器 - vimvim的基本概念vim模式之间的切换vim命令模式各命令汇总vim底行模式各命令汇总 Linux编译器 - gcc/ggcc/g的作用gcc/g选项预处理编译汇编链接静态库与动态库 Linux调试器 -…

【liunx】线程池+单例模式+STL,智能指针和线程安全+其他常见的各种锁+读者写者问题

线程池单例模式STL,智能指针和线程安全其他常见的各种锁读者写者问题 1.线程池2.线程安全的单例模式3.STL,智能指针和线程安全4.其他常见的各种锁4.读者写者问题 喜欢的点赞&#xff0c;收藏&#xff0c;关注一下把&#xff01; 1.线程池 目前我们学了挂起等待锁、条件变量、信…

优雅设计之美:实现Vue应用程序的时尚布局

前言 页面布局是减少代码重复和创建可维护且具有专业外观的应用程序的基本模式。如果使用的是Nuxt&#xff0c;则可以提供开箱即用的优雅解决方案。然而&#xff0c;令人遗憾的是&#xff0c;在Vue中&#xff0c;这些问题并未得到官方文档的解决。 经过多次尝试&#xff0c;小…

设计模式-委托模式

设计模式专栏 模式介绍模式特点应用场景委托模式在GUI编程场景的应用代码示例Java实现委托模式Python实现委托模式 委托模式在spring中的应用 模式介绍 委托模式是一种软件设计模式&#xff0c;其中一个对象&#xff08;委托对象&#xff09;将某些操作委托给另一个对象&#…

ppt怎么录屏录音并且导出?好用录屏软件推荐

ppt已经成为了日常工作与学习中必不可少的工具&#xff0c;而ppt屏幕录制功能&#xff0c;可以方便用户将他人的演讲或视频中的内容记录下来&#xff0c;以便进一步学习与研究。录制ppt演示并将其导出为视频文件&#xff0c;可以帮助我们进行分享&#xff0c;但是很多人不知道p…

基于Python的汽车信息爬取与可视化分析系统

介绍 这款汽车信息网站是基于多项技术和框架设计的全面的汽车信息展示及查询系统。其中&#xff0c;采用了Python Django框架和Scrapy爬虫技术实现数据的抓取和处理&#xff0c;结合MySQL数据库进行数据存储和管理&#xff0c;利用Vue3、Element-Plus、ECharts以及Pinia等前端…

C++设计模式-- 2.代理模式 和 外观模式

文章目录 代理模式外观模式角色和职责代码演示一&#xff1a;代码演示二&#xff1a;外观模式适用场景 代理模式 代理模式的定义&#xff1a;为其他对象提供一种代理以控制对这个对象的访问。在某些情况下&#xff0c;一个对象不适合 或不能直接引用另一个对象&#xff0c;而代…