第四章 指针 Pointer(高级)

第四章

指针 pointer(高级)

希望初学者在入门的时候,可以看一些英文的原著,我感觉英文书籍是原意,而一些现在中文的翻译是加上了译者的一些理解,多少是拿来的东西,所以一些东西我希望能够按照自己的来。

&A  就是取存放A的位置,我们可以将这个位置复制给pointer variable。

*A  从A所指的位置中“提取数值”

接上回,首先取个例子:

Algorithm findBigger(x, y)

Pre: x, y :: refToInteger are valid references

Post: no change to data

Return: the reference to the larger of *x, *y

refToInteger temp

if (*x ≥ *y)

temp ← x

else

temp ← y

end if

return temp

值得注意的是,在这里的x和y是指两个address,我们可以从这两串数字中读取到它所指的数值。当给一个pointer temp赋值时,我们输入这个pointer的值就是x的address。

在C++的实例中就是如此:

int *findBigger(int *x, int *y){

int *temp;

if (*x >= *y)

temp = x;

else

temp = y;

return temp;

}

这时候,temp所存放的就是地址。

Algorithm swap(a, b)

Pre: a :: refToInteger

b :: refToInteger

a, b contain valid references

Post: the contents of *a and *b

are exchanged

Integer temp ← *a

*a ← *b

*b ← temp

下回,我将会讲内存和指针的运用

时间: 2024-10-06 14:49:31

第四章 指针 Pointer(高级)的相关文章

第四章 指针 Pointer(进阶)

第四章 指针 pointer(进阶) 那么我们这次的课程就是学习如何的实现pointer怎么使用pointer. 我们已经知道在pseudo-code如何的declare一个pointer. Integer myNum refToInteger myNumPtr In C++ int myNum; int *myNumPtr; Suppose X is any type. Pseudocode: declare a pointer named ptr using refToX ptr C++: 

第四章 指针 Pointer(入门)

第三章 指针 Pointer 我第一次上网求助,就是在pointer方面遇到了问题,对于我本人来说,有些时候reference和de-reference,address.location.value经常会弄混的,就连我的教授都自己坦言,不仅C++的初学者都会在pointer方面遇到这样那样的问题,而且一些从业多年的编程大神也会遇到指针上面的问题. 有一个笑话,当你学会了指针才能懂: 一个编程的人刚刚完成了一个项目的编程,但是有一个bug总是出现,在他苦苦思索之时,平时打扫卫生的保洁阿姨在旁边说:

第十四章 兼容性和高级互操作

在这一章,我们将学习F# 与其他语言进行互操作所需的内容,不仅包括在.NET 框架内,而且也包括从F# 中使用非托管代码,以及从非托管代码中使用 F#. 警告 在本书中,我尽一切努力保证使你只需要了解 F#:然而,在这一章,虽然我一直保持代码对这些语言中的最低需求,但是,如果你知道一点 C#. C++ 或 .NET Common IL 的内容,对你是有帮助的. C# 调用 F# 库 在 F# 中可以创建两种类型的库:一种是只在 F# 中使用的库,另一种是可以在任何.NET 语言中使用的库.这是因

<深入理解C指针>学习笔记和总结 第四章 指针和数组

数组是一个什么玩意: 数组和指针我的理解,有相同之处也有不同之处.因有相同之处,因此一些资料上说,数组和指针本质是相同的.因有不同之处,因此也有一些资料上说,数组和指针是不一样的. 相同之处: 数组名字和指针名字都代表了一个地址. 如:int num[10];num是数组名.函数开辟了一个存储十个整数类型的空间,而num是他们的首地址. int *p; p=(int *)malloc(10*sizeof(int));类似的,p也指向了首地址. 不同之处是,num[10]中的空间位置是在栈中,而

【linux高级程序设计】(第十四章)TCP高级应用

文件I/O方式比较 1.阻塞式文件I/O 进程从调用函数开始,直到返回这段时间都处于阻塞状态. 2.非阻塞式文件I/O 如果当前没有数据可操作,将不阻塞当前进程,而是立即返回一个错误信息.需要反复尝试. 3.多路复用I/O 仍然是阻塞方式等待,但是可以同时等待多个文件描述符. 4.信号驱动I/O 异步方式,等到数据准备好后通知处理进程,不需要重复询问,效率高. I/O阻塞与非阻塞操作 阻塞方式:默认情况下read/write和 把flag设为0的recv/send 非阻塞方式:如果没有数据,立刻

【linux高级程序设计】(第十四章)TCP高级应用 3

控制socket文件描述符属性 1.set/getsockopt()修改socket属性 int getsockopt (int __fd, int __level, int __optname, void *__restrict __optval, socklen_t *__restrict __optlen):获得某个套接字的属性.成功0,失败-1 int setsockopt (int __fd, int __level, int __optname, __const void *__op

《深入理解C指针》第四章 指针和数组

2019-12-01 19:07:20 原文地址:https://www.cnblogs.com/JasonPeng1/p/11967221.html

javascript高级程序设计 第十四章--表单脚本

javascript高级程序设计 第十四章--表单脚本 在HTML中表单由<form>元素表示,在js中表单对应的是HTMLFormElement类型,这个类型也有很多属性和方法:取得表单元素的引用还是为它添加id特性,用DOM操作来获取表单元素:提交表单:把<input>或<button>元素的type特性设置为"submit",图像按钮把<input>元素的type特性设置为"image",也可以调用submit(

JavaScript高级程序设计:第十四章

第十四章 一.表单的基础知识 在HTML中,表单是由<form>元素来表示的,而在javascript中,表单对应的则是HTMLFormElement类型.HTMLFormElement继承了HTMLElement,因而与其他HTML元素具有相同的默认属性.不过,HTMLFormElement也有它自己下列独有的属性和方法. 取得<form>元素的引用方式有好几种.其中最常见的方式就是将它看成与其他元素一样,并为其添加id特性,然后再像下面这样使用getElementById()方