【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语言中实现代码模块化的基本单位,它允许程序员将任务分解成独立的代码块,每块执行特定的功能。函数的定义包括返回类型、函数名、参数列表以及函数体。返回类型 函数名(参数类型 参数名, ...) {// 函数体。 阅读详情

相关推荐

uniapp 实现RFID识别的实战指南

本文提供了在uniapp中实现RFID识别的完整实战指南。核心在于通过Android系统广播机制,利用uni-app的plus对象调用原生接口,完成与RFID手持设备的“软硬件握手”。文章详细介绍了从环境准备、设备选型、核心代码实现到避坑优化的全流程,帮助开发者快速构建高效的RFID盘点或管理应用。

weixin_29161719的博客 404

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

C语言入门推荐书籍

半汀烟雨·碎菁寒 3万+

Matcap与菲涅尔

菲尼尔效果(简化版公式):fresnel = base + scale*((1-v*n)^power)透明队列为后前渲染,不关闭深度写入则会覆盖之前的像素,导致混合不了。y的值为0~1,根据x3返回对应y值。两色混合做个demo看看!混合为什么要关闭深度写入?

weixin_62773441的博客 371

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

编程及练习

u010530400的博客 447

自动驾驶仿真(二)—— 基于PreScan与Simulink的联合仿真

自动驾驶仿真软件介绍二—— PreScan与Simulink联合仿真1. Prescan仿真软件2. Prescan与Simulink联合仿真2. 1 Prescan和matlab软件安装2. 2 联合仿真配置3. 联合仿真实例3.1 一辆不按法规行驶的小车3.2 另一辆的正常行驶的小车3.3 视觉辅助摄像机3.4 传感器检测4. 系列学习视频教程5. 参考学习的书目教材 上一篇博文简单介绍了Carsim与Simulink联合仿真,接着这篇就再继续简单介绍另一款自动驾驶仿真软件Prescan,并且简单做个P

zhudj08的博客 1万+

射频功率放大器设计实战:从理论到Layout的全流程解析

本文以一款40W、960MHz LDMOS功率放大器为例,系统解析了从理论分析、仿真设计到版图实现的射频功率放大器设计全流程。内容涵盖AB类放大器选型、核心指标定义、稳定性分析、Load-Pull/源牵引仿真、史密斯圆图匹配、偏置网络设计,以及最终的谐波平衡仿真与版图电磁验证,为工程师提供了一套从理论到实践的完整设计方法论。

weixin_29266007的博客 249

C Prime Plus 第二章 C语言概述

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

m0_64238771的博客 730

Oracle GoldenGate (OGG) 实战:从安装到故障排查的完整避坑指南

本文提供了一份详尽的Oracle GoldenGate实战指南,涵盖从环境准备、核心进程配置到性能调优与故障排查的全过程。重点解析了OGG安装与部署中的常见陷阱,并分享了确保数据同步链路稳定运行的高级运维技巧与常见故障处理方法,帮助技术人员高效避坑。

weixin_29230649的博客 380

整理:C primer plus 学习笔记

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

一只大鸽子的博客 1万+

华为od 面试八股文_测试/测试开发_05_含答案

华为od 面试八股文_测试/测试开发_05_含答案

MISAYAONE的博客 2558

【Qt】QtCreator远程部署、调试程序

1)QtCreator 工具–> 选项 --> 设备 --> 添加2)设备设置向导选择–> Generic Linux Device --> 开启向导3)填写“标识配置的名称”(随便写)、设备IP、用户名 --> 下一步4)选择配对秘密文件,第一次配对,可以不填写,点击“下一步”5)点击“完成”6)设备添加成功,需要再配置SSH端口号、用户名、密码等7)保存SSH登陆密码:验证类型选择默认“Default”–> “创建新密钥”–> “Test”

郭老二 5193

《C Prime Plus》知识点记录 P5

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

Hanjie-chen的博客 377

使用Verilog实现QR分解——嵌入式 [设计与代码]

通过Verilog的硬件描述语言,我们可以将QR分解算法实现为硬件电路,并在嵌入式系统中高效地运行。本文将介绍如何使用Verilog设计并实现QR分解算法,该算法用于将一个矩阵分解为正交矩阵Q和上三角矩阵R。具体而言,QR分解通过对矩阵的列进行正交化处理,得到正交矩阵Q,并将对应的正交化结果存储在上三角矩阵R中。该算法通过将矩阵分解为两个部分,正交矩阵Q和上三角矩阵R,实现了对矩阵的分解和变换。模块,该模块接收待分解矩阵A,并输出正交矩阵Q和上三角矩阵R。下面给出了使用Verilog实现QR分解的源代码。

CodeMaven的博客 620

【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

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

【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

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

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

《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、付费专栏及课程。

余额充值