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

news2024/11/19 22:38:20

关于指针意思的参考: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.coloradmin.cn/o/1384414.html

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

相关文章

利益兑现期越短,积极性越高

在2023年一次部门项目提成时间节点的调整&#xff0c;引发了相关的销售部门 &#xff0c;项目集成部门&#xff0c;软件开发部门截然不同的工作积极性。 公司案例 公司做项目的时候&#xff0c;采用的是相关部门都可以在项目获取提成 &#xff0c;之前的提成方式为销售部门为…

maven镜像源设置aliyun提升下载速度

一、打开pom.xml project下在添加 <repositories><repository><id>aliyunmaven</id><name>aliyun</name><url>https://maven.aliyun.com/repository/public</url></repository><repository><id>central2&l…

【Arduino】编程语言:定时函数、数学函数、字符函数(功能、语法格式、参数说明、返回值) | 软件开发环境:安装步骤介绍(EXE安装版、ZIP安装版)

你的负担将变成礼物,你受的苦将照亮你的路。———泰戈尔 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人工智能领域TOP4🌟 🏅[4] 阿里云社区…

prometheus常用exporter

一、node-exporter node_exporter&#xff1a;用于监控Linux系统的指标采集器。 未在k8s集群内的linux机器监控 GitHub - prometheus/node_exporter: Exporter for machine metrics 常用指标&#xff1a; •CPU • 内存 • 硬盘 • 网络流量 • 文件描述符 • 系统负载 •…

电子电器架构车载软件 —— 集中化架构软件开发

电子电器架构车载软件 —— 集中化架构软件开发 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 屏蔽力是信息过载时代一个人的特殊竞争力&#xff0c;任…

vulnhub靶场之DC-8

一.环境搭建 1.靶场描述 DC-8 is another purposely built vulnerable lab with the intent of gaining experience in the world of penetration testing. This challenge is a bit of a hybrid between being an actual challenge, and being a "proof of concept&quo…

机器学习入门知识

一、引言 机器学习是当前信息技术中最令人振奋的领域之一。在这门课程中&#xff0c;我们将探索该技术的前沿&#xff0c;并能够亲自实现机器学习的算法。 或许你每天都在不知不觉中使用了机器学习的算法。每次你打开谷歌或必应搜索你需要的内容&#xff0c;正是因为它们拥有出…

如何使用vite框架封装一个js库,并发布npm包

目录 前言介绍 一、创建一个vite项目 1、使用创建命令&#xff1a; 2、选择others 3、 模板选择library 4、选择开发语言 ​编辑 二、安装依赖 三、目录介绍 1、vite.config.ts打包文件 2、package.json命令配置文件 三、发布npm 1、注册npm账号 2、设置npm源 3、登…

深信服超融合HCI版本升级,6.0.0R5升级至6.8.0R2

超融合升级&#xff0c;需要满足以下条件及前期准备&#xff1a; 确认HCI的升级序列号有效升级时长大概在一个半小时&#xff0c;安全起见&#xff0c;需预留至少三至四小时窗口期升级前&#xff0c;需要将所有虚拟机关机&#xff0c;涉及到业务无法访问&#xff0c;需提前通知…

车规MCU开发之E2E协议

啥是E2E&#xff1f; E2E的原理&#xff1a; 1. 发送端&#xff1a;发送数据包添加E2E保护头 2. 接收端&#xff1a;接收数据包校验E2E保护头 E2E例子 - profile 11为例 E2E_P11ConfigType wk_stP11Cfg { .CounterOffset 8, .CRCOffset 0, .DataID …

opencv多张图片实现全景拼接

最近camera项目需要用到全景拼接&#xff0c;故此查阅大量资料&#xff0c;终于将此功能应用在实际项目上&#xff0c;下面总结一下此过程中遇到的一些问题及解决方式&#xff0c;同时也会将源码附在结尾处&#xff0c;供大家参考&#xff0c;本文采用的opencv版本为3.4.12。 首…

MT8766安卓核心板/开发板_MTK联发科4G安卓手机主板方案定制开发

MT8766采用台积电 12 nm FinFET 制程工艺&#xff0c;4*A53架构&#xff0c;Android 9.0操作系统&#xff0c;搭载2.0GHz 的 Arm NEON 引擎。提供了支持最新 OpenOS 及其要求苛刻的应用程序所需的处理能力&#xff0c;专为具有全球蜂窝连接的高移动性和功能强大的平板设备而设计…

ES 原理和使用场景

为什么不能使用数据库做搜索&#xff1f; 1、比方说&#xff0c;每条记录的指定字段的文本&#xff0c;可能会很长&#xff0c;比如说“商品描述”字段的长度&#xff0c;有长达数千个&#xff0c;甚至数万个字符&#xff0c;这个时候&#xff0c;每次都要对每条记录的所有文本…

第二百六十六回

文章目录 1. 概念介绍2. 分析与解决2.1 分析问题2.2 解决方案 3. 示例代码4. 内容总结 我们在上一章回中介绍了"如何修改CircleAvatar的大小"相关的内容&#xff0c;本章回中将介绍如何修改StatusBar中文字的颜色.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1.…

三、ngxin虚拟主机

目录 什么是nginx虚拟主机修改端口 访问页面1、配置nginx.config 文件2、 添加配置给目录中写入内容检测nginx 是否有语法错误&#xff08;nginx -t&#xff09;重启 nginx查看配置结果 不同主机网卡 查看到不同的页面先添加一个临时ip修改ngixn配置文件创建目录文件检测nginx …

案例121:基于微信小程序的作品集展示系统设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

MySQL进阶篇(五) 锁

一、概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中&#xff0c;除传统的计算资源&#xff08;CPU、RAM、I/O&#xff09;的争用以外&#xff0c;数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问…

C#灵活的任务调度组件FluentScheduler

FluentScheduler是一个C#的灵活的任务调度组件&#xff0c;支持各类任务调度。网上有很多演示代码&#xff0c;此处记录下来&#xff0c;方便自己查找。 // See https://aka.ms/new-console-template for more information //Console.WriteLine("Hello, World!");us…

IP-Adapter:用于文本到图像扩散模型的文本兼容图像提示适配器

文章目录 一、IP-Adapter简介二、IP-Adapter与img2img的区分&#xff08;一&#xff09;结构上的区别&#xff08;二&#xff09;流程上的区别&#xff08;三&#xff09;输出上的区别&#xff08;四&#xff09;原理上的区别 三、IP-Adapter的网络架构&#xff08;一&#xff…

Python教程16:使用海龟画图turtle画会动的时钟

---------------turtle源码集合--------------- Python教程36&#xff1a;海龟画图turtle写春联 Python源码35&#xff1a;海龟画图turtle画中国结 Python源码31&#xff1a;海龟画图turtle画七道彩虹 Python源码30&#xff1a;海龟画图turtle画紫色的小熊 Python源码29&a…