当前位置: 首页 > news >正文

C语言指针学习笔记

1. 指针的定义

指针(Pointer)是存储变量地址的变量。在C语言中,指针是一种非常重要的数据类型,通过指针可以直接访问和操作内存。

2. 指针的声明与初始化

2.1 指针声明

指针变量的声明格式为:数据类型 *指针变量名;

int *ptr;    // 声明一个指向int类型的指针
char *cptr;  // 声明一个指向char类型的指针

2.2 指针初始化

指针变量初始化时,可以将变量的地址赋值给指针,使用地址运算符&

int a = 10;
int *ptr = &a; // 将变量a的地址赋值给指针ptr

3. 指针的使用

3.1 访问指针所指向的变量

通过解引用运算符*可以访问指针所指向的变量的值。

int a = 10;
int *ptr = &a;
printf("Value of a: %d\n", *ptr); // 输出a的值

3.2 修改指针所指向的变量

通过指针可以修改指针所指向的变量的值。

int a = 10;
int *ptr = &a;
*ptr = 20; // 修改a的值为20
printf("Modified value of a: %d\n", a); // 输出修改后的a的值

4. 指针的运算

指针可以进行算术运算,如加减操作,但要注意指针运算的结果依赖于指针指向的数据类型。

int arr[] = {1, 2, 3, 4, 5};
int *ptr = arr;
printf("Value at ptr: %d\n", *ptr); // 输出1
ptr++;
printf("Value at ptr after increment: %d\n", *ptr); // 输出2

5. 指针数组与数组指针

5.1 指针数组

指针数组是一个数组,其元素是指针。

int a = 1, b = 2, c = 3;
int *arr[3] = {&a, &b, &c};
for (int i = 0; i < 3; i++) {printf("Value at arr[%d]: %d\n", i, *arr[i]);
}

5.2 数组指针

数组指针是指向数组的指针。

int arr[3] = {1, 2, 3};
int (*ptr)[3] = &arr;
for (int i = 0; i < 3; i++) {printf("Value at ptr[%d]: %d\n", i, (*ptr)[i]);
}

6. 函数指针

函数指针是指向函数的指针,可以通过函数指针调用函数。

#include <stdio.h>void hello() {printf("Hello, World!\n");
}int main() {void (*func_ptr)() = hello; // 声明并初始化函数指针func_ptr(); // 通过函数指针调用函数return 0;
}

7. 指针与动态内存分配

在C语言中,可以使用malloccallocreallocfree函数进行动态内存分配和释放。

#include <stdio.h>
#include <stdlib.h>int main() {int *ptr = (int*)malloc(sizeof(int) * 5); // 动态分配内存if (ptr == NULL) {printf("Memory allocation failed\n");return 1;}for (int i = 0; i < 5; i++) {ptr[i] = i + 1;}for (int i = 0; i < 5; i++) {printf("Value at ptr[%d]: %d\n", i, ptr[i]);}free(ptr); // 释放内存return 0;
}

8. 常见指针错误

8.1 野指针

野指针指向未分配或已释放的内存。

int *ptr;
*ptr = 10; // 未初始化指针,可能导致程序崩溃

8.2 空指针解引用

解引用空指针会导致程序崩溃。

int *ptr = NULL;
*ptr = 10; // 解引用空指针,可能导致程序崩溃

相关文章:

C语言指针学习笔记

1. 指针的定义 指针&#xff08;Pointer&#xff09;是存储变量地址的变量。在C语言中&#xff0c;指针是一种非常重要的数据类型&#xff0c;通过指针可以直接访问和操作内存。 2. 指针的声明与初始化 2.1 指针声明 指针变量的声明格式为&#xff1a;数据类型 *指针变量名…...

管道的学习

进程间通信&#xff1a;是指在操作系统中&#xff0c;两个或多个独立的进程之间进行数据交换和信息共享的一种机制 进程间通信的本质&#xff1a;先让不同的进程先看到同一份资源&#xff0c;才有通信的条件 进程间通信的目的&#xff1a; 1.将一个进程的数据发送给另一个进程…...

迪威模型网:免费畅享 3D 打印盛宴,科技魅力与趣味创意并存

还在为寻找优质3D打印模型而发愁&#xff1f;快来迪威模型网&#xff08;https://www.3dwhere.com/&#xff09;&#xff0c;一个集前沿科技与无限趣味于一体的免费3D打印宝藏平台&#xff01; 踏入迪威模型网&#xff0c;仿佛开启一场未来科技之旅。其“3D打印”专区&#xff…...

Java运算符

- 算术运算符 - 正号 - - 负号 - 加号 - - 减号 - * 乘号 - / 除 - % 取余 - 自增&#xff08;前&#xff09; 先运算后取值 i&#xff1b; 自增&#xff08;后&#xff09; 先取值后运算 i&#xff1b; public cla…...

Kimi K1.5 与 DeepSeek R1:AI 模型的深度对比

文章目录 一、背景介绍二、核心功能对比三、K1.5 使用方法&#xff1a;四、总结 随着人工智能技术的飞速发展&#xff0c;大型语言模型在各个领域都展现出了巨大的潜力。Kimi K1.5 和 DeepSeek R1 作为当前备受关注的两款先进 AI 模型&#xff0c;各自拥有独特的功能和优势。本…...

mysql索引为什么用B+树不用,B树或者红黑树

MySQL 选择 B 树作为索引结构&#xff0c;而不是 B 树或红黑树&#xff0c;主要原因如下&#xff1a; 1. 磁盘 I/O 优化 B 树&#xff1a;节点存储更多键值&#xff0c;树的高度较低&#xff0c;减少了磁盘 I/O 次数&#xff0c;适合处理大规模数据。 B 树&#xff1a;虽然也…...

Redis 全方位解析:从入门到实战

引言 在当今互联网快速发展的时代&#xff0c;高并发、低延迟的应用场景越来越普遍。Redis&#xff0c;作为一款高性能的开源数据库&#xff0c;以其卓越的性能和灵活的功能&#xff0c;成为了许多开发者的首选工具。无论是在缓存、消息队列&#xff0c;还是在实时数据分析等领…...

无第三方依赖 go 语言工具库

- 开源地址 GitHub - zdhsoft/xmutilsgo: utils for go - 使用办法 go get github.com/zdhsoft/xmutilsgo 主要内容 int.go 定义泛型的整数类型和字符串转整数的函数和随机范围的函数isin.go 判断指定元素是否再数组中的函数page.go mysql用于分页的类ret.go 通用返回值的类…...

代码随想录算法【Day49】

Day49 42. 接雨水 思路 这道题利用单调栈进行横向求解。对于每一个元素&#xff0c;找到它右边第一个比它大的元素和左边第一个比它大&#xff08;或者与它相等的元素&#xff0c;当然这种情况可以忽略&#xff09;&#xff0c;最后计算雨水的存储量&#xff1a;&#xff08…...

R-CNN

这是一个20004096的一个特征矩阵 05:44在这个特征矩阵当中呢 05:45每一行就是我们一个候选框 05:48通过CNN网络得到了一个特征向量 05:51然后它有2000候选框 05:53所以它一共有2000行 05:54然后中间这个就是我们所说的SVM权值矩阵 05:58它的每一列呢 05:59就对应着我们…...

Linux探秘坊-------5.git

1.git介绍 1.版本控制器 为了能够更⽅便我们管理这些不同版本的⽂件&#xff0c;便有了版本控制器。所谓的版本控制器&#xff0c;就是能让你了解到⼀个⽂件的历史&#xff0c;以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统&am…...

项目中分库分表的分布式ID如何生成

分库分表与分布式ID生成在Java项目中的应用 在大规模的分布式系统中&#xff0c;数据库表和数据量的增大可能会导致单个数据库或单个表的性能瓶颈。为了解决这个问题&#xff0c;我们通常使用分库分表来进行数据的水平切分和垂直切分。同时&#xff0c;在分布式环境中&#xf…...

SOME/IP--协议英文原文讲解8

前言 SOME/IP协议越来越多的用于汽车电子行业中&#xff0c;关于协议详细完全的中文资料却没有&#xff0c;所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块&#xff1a; 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 4.2 Speci…...

JUC并发—7.AQS源码分析三

大纲 1.等待多线程完成的CountDownLatch介绍 2.CountDownLatch.await()方法源码 3.CountDownLatch.coutDown()方法源码 4.CountDownLatch总结 5.控制并发线程数的Semaphore介绍 6.Semaphore的令牌获取过程 7.Semaphore的令牌释放过程 8.同步屏障CyclicBarrier介绍 9.C…...

避坑:过早的文件结束符(EOF):解决“git clone龙蜥OS源码失败”的失败过程

避坑&#xff1a;过早的文件结束符&#xff08;EOF&#xff09;&#xff1a;解决“git clone龙蜥OS源码失败”的失败过程 安装Anolis OS 8.9 下载AnolisOS-8.9-x86_64-dvd.iso并安装。 使用uname -a查看内核版本为5.10.134-18.an8.x86_64。 [rootlocalhost cloud-kernel]# c…...

基于知识图谱的问答系统:后端Python+Flask,数据库Neo4j,前端Vue3(提供源码)

基于知识图谱的问答系统&#xff1a;后端PythonFlask&#xff0c;数据库Neo4j&#xff0c;前端Vue3 引言 随着人工智能技术的不断发展&#xff0c;知识图谱作为一种结构化的知识表示方式&#xff0c;逐渐成为问答系统的重要组成部分。本文将介绍如何构建一个基于知识图谱的问答…...

日做力扣题2--215. 数组中的第K个最大元素

这道题我在做北京的一家教育公司的笔试时出现过&#xff0c;且题目里直接要求使用快排做&#xff0c;所以我也使用快排做的。 题目&#xff1a; 给定整数数组 nums 和整数 k&#xff0c;请返回数组中第 k 个最大的元素。 请注意&#xff0c;你需要找的是数组排序后的第 k 个最…...

centos8 使用yum安装程序出现报错

在执行yum指令出现源更新不了Could not resolve host: mirrorlist.centos.org&#xff1b; Unknown error问题 yum -y update结果 Errors during downloading metadata for repository appstream: - Curl error (6): Couldnt resolve host name for http://mirrorlist.centos…...

linux系统搭建DNS服务器、详细知识讲解

DNS服务器系统为rocky9.5&#xff0c; 1、安装DNS dnf -y install bind bind-utilsbind软件包 BIND 是一个开源的 DNS 服务器软件&#xff0c;广泛用于域名解析服务。 配置管理&#xff1a; 权威 DNS 服务器&#xff08;Authoritative DNS&#xff09;&#xff1a;为特定域名…...

【部署优化篇四】《DeepSeek移动端优化:CoreML/TFLite实战对比》

手机里的AI助手能秒速回答你的问题,游戏人物能实时追踪你的表情变化,这些酷炫功能的背后都离不开移动端机器学习框架的支撑。今天我们就来撕开两个当红炸子鸡框架CoreML和TFLite的神秘面纱,看看它们在模型优化这件事上到底藏着哪些独门绝技。 一、移动端优化的生存法则 在…...

DeepSeek联网搜索

deepseek 0、前言1、未联网2、联网2.1 SerpAPI2.2 SerpAPIDeepseek 0、前言 为获取最新消息&#xff0c;需给deepseek联网 1、未联网 from dotenv import load_dotenv from langchain_deepseek import ChatDeepSeekload_dotenv()# 1、模型 model ChatDeepSeek(model"d…...

pt100 2线和3线的区别?

3线比2线更稳定一些&#xff1b; 在电路中&#xff0c;b和c是不连接在一起的&#xff1b; 测试的时候&#xff0c;b和c是接在一起的&#xff0c;也就是说pt100中b和c是连接在一起的 3线比2线多一个反馈&#xff1b; 平时测试的时候&#xff0c;测试一下ab或者ac 都是一样的…...

ollama-chat-ui-vue,一个可以用vue对接ollama的开源项目,可接入deepSeek

ollama-chat-ui-vue 使用vue3 vite elementUi 搭建的前端chat,通过ollama可与模型对话,目前支持独立思考,切换模型(联网查询后续支持) github地址&#xff1a;ollama-chat-ui-vue 制作不易github点点star&#xff0c;谢谢 前置工作 安装ollama,ollama官网地址 安装完olla…...

hot100-3、438、560、239、240、160、234(2简3中1难)

滑窗问题↓ 3. 无重复字符的最长子串&#xff08;中等&#xff09; 方法一、滑动窗口 数组结合哈希表ascii码&#xff0c;滑动出口。其实可以优化为left Math.max(left,map.get(s.charAt(i)) 1)&#xff0c;数组的话就是全部初始化为-1&#xff0c;用来计算最新下标而不是…...

深入理解 Java 反射机制:获取类信息与动态操作

在 Java 编程中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时动态地获取类的信息并操作类的属性、方法和构造器。反射是 Java 动态语言特性的核心&#xff0c;广泛应用于框架开发、插件系统、序列化和反序列化等领域。本文…...

Redis 主从复制

概念 在分布式系统中为了解决单点问题&#xff0c;通常会把数据复制多个副本部署到其他服务器&#xff0c;满⾜故障恢复和负载均衡等需求。Redis 也是如此&#xff0c;它提供了复制的功能&#xff0c;实现了相同数据的多个 Redis 副本&#xff0c;通过一个主节点&#xff08;ma…...

Unity中NavMesh的使用 及其 导出给java服务端进行寻路

1.先添加 AI Navigation组件 2.Windows-->AI-->Navigation(Obsolete) 这样子就可以看到烘焙按钮 3.将物体标记为行走和不可行走 4.添加一个Plane和一些球体&#xff0c;并把需要形成NavMesh的物体选择为静态 // 因为只能烘焙静态的 之后可以看出烘焙后&#xff0c;看着被…...

【含文档+PPT+源码】基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现

项目介绍 本课程演示的是一款基于微信小程序的猎兔汽车保养维修美容服务平台的设计与实现&#xff0c;主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含&#xff1a;项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部…...

iOS App的启动与优化

App的启动流程 App启动分为冷启动和热启动 冷启动&#xff1a;从0开始启动App热启动&#xff1a;App已经在内存中&#xff0c;但是后台还挂着&#xff0c;再次点击图标启动App。 一般对App启动的优化都是针对冷启动。 App冷启动可分为三个阶段&#xff1a; dyld&#xff1a…...

一周学会Flask3 Python Web开发-request请求钩子(Hook)

锋哥原创的Flask3 Python Web开发 Flask3视频教程&#xff1a; 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 有时候我们业务需求对请求做一些鉴权&#xff0c;日志&#xff0c;统计分析等功能&#xff0c;这时候可以对请求进行预处理( …...

git clone

方法一&#xff08;替换URL&#xff09; git clone https://gitclone.com/github.com/tendermint/tendermint.git 方法二&#xff08;设置git参数&#xff09; git config --global url."https://gitclone.com/".insteadOf https:// git clone https://github.co…...

nginx ngx_http_module(8) 指令详解

nginx ngx_http_module(8) 指令详解 nginx 模块目录 nginx 全指令目录 一、目录 1.1 模块简介 ngx_http_ssi_module&#xff1a;服务器端包含&#xff08;SSI&#xff09;模块&#xff0c;允许在HTML页面中插入其他内容或动态生成的内容。通过特殊的SSI指令&#xff08;如 …...

Apache Struts RCE (CVE-2024-53677)

前言 对目前的Apache Struts RCE (CVE-2024-53677)的poc进行总结&#xff0c;由于只能单个ip验证&#xff0c;所以自己更改一下代码&#xff0c;实现&#xff1a;多线程读取url验证并保存&#xff0c;更改为中文解释 免责声明 请勿利用文章内的相关技术从事非法测试&#xf…...

windows系统本地部署DeepSeek-R1全流程指南:Ollama+Docker+OpenWebUI

本文将手把手教您使用OllamaDockerOpenWebUI三件套在本地部署DeepSeek-R1大语言模型&#xff0c;实现私有化AI服务搭建。 一、环境准备 1.1 硬件要求 CPU&#xff1a;推荐Intel i7及以上&#xff08;需支持AVX2指令集&#xff09; 内存&#xff1a;最低16GB&#xff0c;推荐…...

前端:最简单封装nmp插件(组件)过程。

一、nmp使用 1、注册nmp账号&#xff1a;npm | Home 2、创建插件名称文件夹&#xff0c;如&#xff1a; vue3-components 3、初始化一个package.json文件&#xff1a;nmp init npm init package.json配置用处介绍&#xff0c;如下&#xff1a; {// 包名&#xff0c;必须…...

百度搜索融合 DeepSeek 满血版,开启智能搜索新篇

百度搜索融合 DeepSeek 满血版&#xff0c;开启智能搜索新篇 &#x1f680; &#x1f539; 一、百度搜索全量接入 DeepSeek &#x1f539; 百度搜索迎来重要升级&#xff0c;DeepSeek 满血版全面上线&#xff01;&#x1f389; 用户在百度 APP 搜索后&#xff0c;点击「AI」即…...

导出指定文件夹下的文件结构 工具模块-Python

python模块代码 import os import json import xml.etree.ElementTree as ET from typing import List, Optional, Dict, Union from pathlib import Path class DirectoryTreeExporter:def __init__(self,root_path: str,output_file: str,fmt: str txt,show_root: boo…...

V4L2驱动之UVC

以下是关于V4L2摄像头驱动框架与UVC协议的关联分析&#xff0c;从内核驱动到用户空间的完整视角&#xff1a; 1. V4L2驱动框架核心架构 关键组件&#xff1a; 核心层 (V4L2 Core) v4l2_device&#xff1a;设备的总入口&#xff0c;管理所有子组件video_device&#xff1a;对应…...

【Linux】匿名管道的应用场景-----管道进程池

目录 一、池化技术 二、简易进程池的实现&#xff1a; Makefile task.h task.cpp Initchannel函数&#xff1a; 创建任务&#xff1a; 控制子进程&#xff1a; 子进程执行任务&#xff1a; 清理收尾&#xff1a; 三、全部代码&#xff1a; 前言&#xff1a; 对于管…...

umi react+antd 判断渲染消息提示、input搜索、多选按钮组

记得map里返回的每层遍历结构都要带上key&#xff08;图里没加&#xff0c;最近在接手react&#xff0c;熟悉中......

Windows桌面系统管理5:Windows 10操作系统注册表

Windows桌面系统管理0&#xff1a;总目录-CSDN博客 Windows桌面系统管理1&#xff1a;计算机硬件组成及组装-CSDN博客 Windows桌面系统管理2&#xff1a;VMware Workstation使用和管理-CSDN博客 Windows桌面系统管理3&#xff1a;Windows 10操作系统部署与使用-CSDN博客 Wi…...

华为昇腾 910B 部署 DeepSeek-R1 蒸馏系列模型详细指南

本文记录 在 华为昇腾 910B(65GB) * 8 上 部署 DeepSeekR1 蒸馏系列模型&#xff08;14B、32B&#xff09;全过程与测试结果。 NPU&#xff1a;910B3 (65GB) * 8 &#xff08;910B 有三个版本 910B1、2、3&#xff09; 模型&#xff1a;DeepSeek-R1-Distill-Qwen-14B、DeepSeek…...

文献阅读 250219-Global water availability boosted by vegetation-driven changes (1)

Global water availability boosted by vegetation-driven changes in atmospheric moisture transport 来自 <https://www.nature.com/articles/s41561-022-01061-7> ## Abstract: 全球水资源的可用性是气候变化研究中的重要议题&#xff0c;尤其是随着气候变化的加剧&a…...

蓝桥杯篇---超声波距离测量频率测量

文章目录 简介第一部分&#xff1a;超声波的简介工作原理1.发射超声波2.接收反射波3.计算时间差4.计算距离 硬件连接1.Trig2.Echo 示例代码代码说明注意事项1.声速2.延时精度3.硬件连接 第二部分&#xff1a;频率测量简介频率测量原理1.信号输入2.计数3.计算频率 硬件连接示例代…...

【玩转 Postman 接口测试与开发2_020】(完结篇)DIY 实战:随书示例 API 项目本地部署保姆级搭建教程(含完整调试过程)

《API Testing and Development with Postman》最新第二版封面 文章目录 最新版《Postman 接口测试与开发实战》示例 API 项目本地部署保姆级搭建教程1 前言2 准备工作3 具体部署3.1 将项目 Fork 到自己名下3.2 创建虚拟环境并安装依赖3.3 初始运行与项目调试 4 示例项目的用法…...

LearnOpenGL——高级OpenGL(下)

教程地址&#xff1a;简介 - LearnOpenGL CN 高级数据 原文链接&#xff1a;高级数据 - LearnOpenGL CN 在OpenGL中&#xff0c;我们长期以来一直依赖缓冲来存储数据。本节将深入探讨一些操作缓冲的高级方法。 OpenGL中的缓冲本质上是一个管理特定内存块的对象&#xff0c;它…...

wangEditor 编辑器 Vue 2.0 + Nodejs 配置

资料 Vue2.0 版本的安装&#xff1a;https://www.wangeditor.com/v5/for-frame.html#%E4%BD%BF%E7%94%A8上传图片配置&#xff1a;https://www.wangeditor.com/v5/menu-config.html#%E4%B8%8A%E4%BC%A0%E5%9B%BE%E7%89%87 安装步骤 1.安装界面基础部分 <!-- 富文本编辑器…...

机器学习·数据处理

前言 对于大规模数据&#xff0c;我们经常会使用python内置函数或者编写脚本进行批量化处理&#xff0c;从而提高后续使用算法的效率。 1. 正则表达式 定义&#xff1a;用于检索、替换符合某个模式的文本&#xff0c;是文本预处理常用技术。基本语法 符号描述.匹配除换行符 …...

如何在Bigemap Pro中用线分割面、挖空

有时候需要以一条线为界对面元素进行分割或者是需要在一个面元素里面挖空一个面形状的洞&#xff0c;对此需求可以使用bigemap pro工具实现&#xff0c;这里为你介绍一下具体的操作方法。 【一】画线分割面 第一步&#xff1a;现在这是一个不规则多边形&#xff0c;想要以手动…...

网络安全入门攻击与防御实战(四)

漏洞利用&#xff1a;永恒之蓝&#xff08;MS17-010&#xff09;与同类漏洞解析 1 永恒之蓝&#xff08;MS17-010&#xff09;漏洞背景 &#xff08;1&#xff09;漏洞信息 CVE编号&#xff1a;CVE-2017-0143 ~ CVE-2017-0148 影响范围&#xff1a;Windows XP ~ Windows 201…...