【C Prime Plus】学习笔记,Chapter 10,数组和指针之五

C++ Prime Plus(第6版) 第4章 学习笔记 存储多个同类型值 在内存中连续type name{size}; 阅读详情
// 【C Prime Plus】学习笔记,Chapter 10,数组和指针之五
// 指针的赋值,加减运算
// Page 667

#include <stdio.h>

int main(void)
{
	int *ptr0,*ptr1,*ptr2;

     
	// 如果指针没有初始化,进行 ++ 运算,编译会warning使用了没有初始化的指针,但是不是严重错误
	 //ptr0++;

	// 如果没有初始化,就给指针所指的"地址"赋值,其实这个地址是不确定的,编译能通过,仅仅是警告,但是链接就显示这是严重错误的
	// 可能会覆盖其他的地址上的数据,或者直接导致程序崩溃
   //	*ptr0=5;



	int arn[5]={100,200,300,400,500};

	// (1) 给指针赋值,通常是数组名 或者 用&运算符取某个地址
	 ptr0 = arn;
	 ptr1 = &arn[1];
	 printf("指针ptr0的值(地址)是:%ld\n",ptr0);
	 printf("指针ptr1的值(地址)是:%ld\n",ptr1);
    
    // (2) * 运算,所谓的解指引, 就是取指针对应的值
	 int x = *ptr0;
	 
    // (3) &运算,就是取地址运算,可以取指针它自身的地址
	 printf("指针ptr0自身的地址是:%ld\n",&ptr0);

	 //  (4) 加整数N到指针上,这种算法实际就是移动N个单元,单元就是指针的所指的基本数据类型 
	 //   (减整数N也一样的意思,移动方向相反)
	 //   不论是指针是什么类型的,int,long,或double ,这里的N都必须是整数,因为指针作为地址,其值本质上unsigned int
	  ptr2=ptr0+2; // 找到ptr0的地址,然后向后移动2个单元.(不是移动ptr0哦,ptr0本身是没有改变的)
	  printf("指针ptr2的值(地址)是:%ld\n",ptr2);
	  printf("指针ptr2地址保存的值arn[2]:%ld\n",*ptr2);

	  // (5) 使用 ++ 或 -- 运算
	   ptr0++; // 这样改变了ptr0的指向
	   printf("指针ptr0的值(地址)是:%ld\n",ptr0);
	   printf("指针ptr0地址保存的值:%ld\n",*ptr0);

	   ptr0--;
	    printf("指针ptr0的值(地址)是:%ld\n",ptr0);
		printf("指针ptr0地址保存的值:%ld\n",*ptr0);

		//(6) 2个指针做差运算: 结果并非是想当然的十六进制的地址数值本身的差,而是指针的单元间距
		int y = ptr1-ptr2; //低位减高位
		printf("指针ptr1-ptr2的值(地址)是:%ld\n",y);  // 结果是-1,并非-4
		int z = ptr2-ptr1;  // 高位减低位
	    printf("指针ptr2-ptr1的值(地址)是:%ld\n",z);  // 结果是 1,并非 4

    


	//---
	return 0;

}


输出结果:

 

指针ptr0的值(地址)是:1245024
指针ptr1的值(地址)是:1245028
指针ptr0自身的地址是:1245052
指针ptr2的值(地址)是:1245032
指针ptr2地址保存的值arn[2]:300
指针ptr0的值(地址)是:1245028
指针ptr0地址保存的值:200
指针ptr0的值(地址)是:1245024
指针ptr0地址保存的值:100
指针ptr1-ptr2的值(地址)是:-1
指针ptr2-ptr1的值(地址)是:1

 


 

 

深入学习C语言与C++基础:《C Prime Plus Sixth Edition》精读指南 C语言是一种广泛使用的计算机编程语言,它以其高效性和灵活性而著称,特别适合用于系统编程和硬件操作。它是许多现代编程语言的基础,包括C++和Objective-C。C语言的标准由ANSI于1989年制定,后续由国际标准化组织(ISO)在1990年正式采纳。函数是C语言中实现代码模块化的基本单位,它允许程序员将任务分解成独立的代码块,每块执行特定的功能。函数的定义包括返回类型、函数名、参数列表以及函数体。返回类型 函数名(参数类型 参数名, ...) {// 函数体。 阅读详情

相关推荐

别再只飞不记了!用CsvView分析你的大疆飞行日志,优化航拍与排查炸机原因

本文详细介绍了如何利用CsvView工具分析大疆无人机的飞行日志,帮助用户优化航拍效率和飞行安全。通过解读飞行日志中的关键数据,如电池性能、飞行轨迹等,用户可以及时发现潜在问题并改进飞行习惯。文章还提供了事故排查方法和进阶分析技巧,适合无人机爱好者和专业飞手。

weixin_42535461的博客 548

记录:C语言初学者阅读《C Primer Plus》的经验总结

C语言入门推荐书籍

半汀烟雨·碎菁寒 3万+

AI Agent开发实战:100个真实场景题库解析

AI Agent开发涉及复杂的需求理解、架构设计及安全防护等关键技术环节。在工程实践中,开发者常面临需求偏差、系统崩溃等挑战,特别是在金融、医疗等高要求场景下。通过真实案例题库,开发者能系统性地掌握需求分析、架构决策树建模(如向量数据库选型)、安全攻防策略(如提示词注入防御)等核心技能。这些实战经验不仅能提升Agent的可用性和安全性,还能优化其在电商客服、智能家居等场景中的表现。题库采用动态难度系统,覆盖从基础到高级的开发挑战,是AI工程化落地的重要参考。

weixin_29057695的博客 344

《C Prime Plus》(第六版) 第07章 C控制语句:分支和跳转 例题集和编程练习

编程及练习

u010530400的博客 447

UMI刷盘机器人代码实战:从SLAM到Diffusion Policy的完整部署流程

本文详细解析了UMI(Universal Manipulation Interface)刷盘机器人从数据准备到真实部署的完整实战流程。通过SLAM处理视频数据生成三维轨迹,并训练Diffusion Policy模型,最终将策略部署到UR5机械臂与WSG50夹爪上,实现从模仿学习到物理执行的闭环。

weixin_29042035的博客 461

51单片机IAP技术详解:从原理到实战,实现远程程序自更新

在嵌入式系统开发中,程序更新是产品维护和功能迭代的核心需求。传统方式依赖外部烧录器,操作繁琐且无法远程进行。IAP(在应用中编程)技术则从原理层面解决了这一难题,它允许单片机在运行过程中通过特定接口(如串口)动态修改自身的Flash程序存储器。这项技术的核心价值在于赋予设备远程升级和自主维护的能力,极大地延长了产品生命周期并降低了维护成本。其典型应用场景包括智能家居控制器、工业数据采集模块和远程仪表等部署后不便拆卸的设备。本文以经典的51单片机(如STC89C52)为例,深入剖析IAP的实现,其中Bootl

weixin_29161719的博客 404

C Prime Plus 第二章 C语言概述

其形式和main()函数相同,都包含函数头和用花括号括起来的函数体。

m0_64238771的博客 730

自然语言处理:稀疏向量表示

稀疏向量表示是指运用特定的方法和技术,将数据(如文本、图像、信号等)转化为向量形式,且该向量具有大部分元素值为零,仅少数元素值非零的特征,以此来实现对数据的高效存储、处理和分析。

老赵爱学习的博客 1443

整理:C primer plus 学习笔记

前言:简单看了一遍C Primer Plus, 整理了一下,因为时间比较少,自己理解地比较肤浅,所以第一版比较简陋。 假期的时候应该会有时间再整理一下。------2018/11/5 2019/1/23 寒假整理一下笔记。 2019/3/7 大二下学期记:这本书内容还是很多的,举例比较多,也涉及了一些C语言的”高级“特性,有些地方难度很高,但是即使没能掌握也并不影响使用C语言。感觉想用笔记来...

一只大鸽子的博客 1万+

自动驾驶算法/规划决策控制算法面经汇总、学习路线、面经心得

自动驾驶算法学习路线,面试求职大全

qq_41667348的博客 1万+

基于Simulink的单级式光伏并网系统MPPT控制仿真

本文基于Simulink平台,详细介绍了单级式光伏并网系统的MPPT控制仿真实现。主要内容包括:1)阐述MPPT作为光伏系统"智能大脑"的核心作用;2)解析单级式系统架构及扰动观察法(P&O)算法原理;3)以10kW户用系统为例,分步骤演示建模过程,包括光伏阵列搭建、P&O控制器实现(含MATLAB代码)、并网控制设计等;4)通过仿真验证系统在光照突变下的动态响应性能,MPPT效率达98.3%。文章还提出了变步长P&O等优化方向,为光伏系统仿真与控制提供实用指导。

xiaoheshang_123的博客 111

《C Prime Plus》知识点记录 P5

Page 5 前言 最近看了《C Prime Plus》第六版。感觉这本是写真的不错,说起来我一个计算机的学生现在才开始这本书实在是有点慢了,虽然学校在大一上的时候教过这门课,但是和这本书的内容相比简直就是弱爆了。在看这本书的时候,我会把一些比较容易忘记的知识点记下来,但是想想可能也有很多的小白和我有一样的问题,所以干脆就写这一系列的博客,一方面方便我回顾,另一方面可以帮助有同样问题的小白。 我把书中的代码和课后习题放在了自己的github里面了,地址是 https://github.com/alon-ha

Hanjie-chen的博客 377

上位机 寻边器 通讯实战

寻边器通讯接口实现 本文介绍了上位机与盖泽(Gazer)和JEL品牌寻边器的通讯接口实现方案。主要内容包括: 接口定义:创建了IAlignerOperation接口,定义了获取状态、控制运动、真空吸附等核心功能。 具体实现: 盖泽寻边器(GazerAlignerCjh):通过串口通讯,实现了回零、校准、移动位置等操作 JEL寻边器(JelAligner):同样基于串口通讯,包含错误处理、状态查询等功能 工厂模式:通过AlignerFactory工厂类根据设备品牌创建对应的实现对象。 设备加载:展示了如何在系

StevenChen的博客 377

【C Prime Plus】学习笔记,Chapter 10,数组和指针之四

// 指针操作:使用指针作为参数 page 661 #include #define SIZE 10 int sump(int *start,int *end); int main(void) { int marbles[SIZE]={20,10,5,39,4,16,19,26,31,20}; long answer; // 数组是int,求和防止出界,用long an

-----------------------------不要在跟自己无关的事情上浪费时间 958

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【C Prime Plus】学习笔记,Chapter 10,数组和指针之一

// C Prime Plus Page 651 // Listing 10.8 #include #define SIZE 4 int main(void) { short dates[SIZE]; short * pti; short index; double bills[SIZE]; double *ptf; pti = dates; ptf

-----------------------------不要在跟自己无关的事情上浪费时间 1296

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C primer plus 学习笔记 第10章 数组和指针

第10章 数组和指针 10.1 数组 数组由数据类型相同的一系列元素组成。使用数组时,通过声明数组告诉编译器数组中含有多少元素和这些元素的类型。 下面是几个数组声明: float candy[365]; char code[12]; 10.1.1 初始化数组 使用{}来初始化数组: int powers[3] = {1,2,4}; tip:使用const前缀声明数...

一只大鸽子的博客 1791

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

《C Prime Plus》读书笔记(10):数组和数组指针

文章目录数组的初始化数组指针数组指针与数组下标的关系 数组的初始化 当数组为静态变量时(块作用域、外部链接、内部链接的静态变量),数组默认初始化为0 当数组为自动变量时,数组的初始化方式: 已知数组大小完全初始化和部分初始化 自动匹配数组大小初始化 #include<stdio.h> int arr1[5]; // 默认初始化 static int arr2[5]; // 默认初始化 int main(){ static int arr3[5] // 默认初始化 /*不可默

fang 0 jun的博客 211

【C Prime Plus】学习笔记,Chapter 10,数组初始化问题

// 【C Prime Plus】学习笔记,Chapter 10, P631 #include int main(void) { int i; char arr[4]; printf("局部变量没有初始化,看看打印出来是什么\n"); for(i=0;i<4;i++) printf("%d\n",arr[i]); printf("局部变量仅仅初始

-----------------------------不要在跟自己无关的事情上浪费时间 911

c prime plus 学习重点知识(数组与指针)

数组地址 我们举一个变相使用指针的例子:数组名是数组首元素的地址。也就是说,如果flizny是一个数组,下面的语句成立: flizny = &flizny[0]; //数组名是该数组首元素的地址 flizny和&flizny[0] 都表示数组首元素的内存地址(&是地址运算符)。两者都是常量,在程序的运行过程中,不会改变。但是,可以把它们赋值给指针变量,然后可以修改指针变量的值。 地址存储 首先看下下面这段代码: #include<stdio.h> #define n 3

qq_35082781的博客 565

【C Prime Plus】学习笔记,Chapter 10,数组和指针之三

#include #define SIZE 10 int sum(int [],int); int main(void) { int marbles[SIZE]={20,10,5,39,4,16,19,26,31,20}; long answer; answer = sum(marbles,SIZE); printf("the total number of marbles

-----------------------------不要在跟自己无关的事情上浪费时间 910

【C Prime Plus】学习笔记,Chapter 10,数组和指针之二

// C Prime Plus, Page 656 /*   int marbles[10];   如果要计算这个数组所有元素的和,函数的可能调用形式如下:   int total = sum(marbles)   数组名 marbles是它的第一个元素的 地址,而地址(指针)是个整型数(int)   也就是说形参marbles实际是传递了个地址,因此可以用个int *p 指针来构造函

-----------------------------不要在跟自己无关的事情上浪费时间 648

c primer plus 指针与多维数组探究

C primer plusP266,指针和多维数组,zippo1_yql20170628.c程序,主要代码如下 int a=1;     long long b=2; int zippo[4][2] = { {2,4}, {6,8}, {1,3}, {5, 7} }; int (*pz)[2];       printf("   zippo = %p,    zippo + 1 = %

legendyql的博客 603

C和C++ Prime Plus 学习资源:一站式编程学习解决方案

C和C++ Prime Plus 学习资源:一站式编程学习解决方案 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在编程学习的道路上,找到一套合适的学习资源至关重要。C和C++ Prime Plus 学习资源为您提供了一套全面的编程学习解决方案,涵盖C语言和C++语言的基础到高级知识。项目内含丰富的源码资源,辅助您深入理解《C Prime Plus》和《C++ Pri...

gitblog_06704的博客 845

C Prime Plus 第6章习题

P170~P176

weixin_45641816的博客 1079

C和C++ Prime Plus 学习资源

C和C++ Prime Plus 学习资源 去发现同类优质开源项目:https://gitcode.com/ 感谢您访问本仓库,这里提供了《C Prime Plus》和《C++ Prime Plus》两本书的章节源码资源,旨在帮助学习者和开发者更好地理解和掌握C语言和C++语言的编程技巧。 资源简介 本资源文件包含以下内容: C Prime Plus:涵盖了C语言的入门到进阶知识,包括基础语法、...

gitblog_06796的博客 386

C Primer Plus (第五版)中文版——第 10 章 数组和指针

10.1  数组 数组(array)由一系列类型相同的元素构成。数组声明(array declaration)中包括数组元素的数目和元素的类型。如: int month[12]; /* 12个整数的数组 */ /* int 是数组中元素的类型;month 是数组名,也是数组首元素的地址; 方括号 [] 表示 month 是一个数组;方括号中的...

Mr__Gold的博客 353
上一篇: 【C Prime Plus】学习笔记,Chapter 10,数组和指针之四
下一篇: 【C Prime Plus】学习笔记,Chapter 10,用const 修饰形参 保护数据,以防修改
sergery
博客等级 码龄18年 113粉丝 136原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值