你好, 欢迎回来｡
在这节课中,
我想讨论一下指针的定义, 主要是声明报告器的语法, 然后用运算符的地址给指针分配一个内存地址｡
因此, 到目前为止, 我们应该记住,
指针只不过是一个指向内存地址或包含内存地址作为其值的变量｡
所以声明一个指针和创建一个普通指针是不一样的｡
所以你不能做指针指针之类的事情｡
这不是声明指针的方法｡ 语法略有不同｡
您使用星号｡ 所以仅仅说变量是指针是不够的｡
您还必须指定指针指向的变量的类型｡
不同的变量类型占用不同的存储量｡
某些指针操作需要知道存储大小｡
因此,
就像在指定数据类型时指定常规变量一样, 在创建指针数据类型的变量时, 也必须指定该数据类型｡
您可以通过执行以下操作来声明指向int类型变量的指针：int星星或星号p number｡
它会告诉你这是一个指针｡
int看起来是一样的, 但后面是星号｡
星号表示指针, 然后指定指针本身的类型｡
这是一个整型指针｡
名为p的变量的类型编号为int星星｡
它可以存储任何int类型变量的地址｡
指针存储地址｡
所以如果你要存储另一个变量的地址,
这个变量必须定义为整型｡
这里PI指向int变量, char,
星星,
pc, 它指向字符变量, float, star,
pf, star, pg, 这些都是指向浮点变量的指针｡
这就是你如何定义他们, 类型很重要｡
星号和指针名称之间的空格是可选的｡
你不需要在那里留空格｡ 你可以没有空间｡
最后会发生什么, 我们将要讨论的是, 变量的取值通常是在声明中使用一个空格, 然后当你取值的时候,
你就不用它了.
因此, 根据惯例, 所有这些声明都应包含一个空格｡
指针的值是一个地址, 因此在大多数系统中, 它必须在内部表示为一个无符号映像｡
所以它还是要存储一些东西｡ 它恰好存储一个十六进制数｡
即使它是以整型的形式存储的, 也不要把它当作整型｡
你可以对整数做同样的事情, 你不一定能对指针做, 反之亦然｡
所以即使你试着把它打印出来, 它看起来像一个数字, 一个十六进制数,
这并不意味着你可以把它当作整数｡
例如,
可以将一个整数乘以另一个整数, 但不能将一个指针乘以另一个指针｡
指针确实是一种新类型, 它不是整型｡
百分比p表示为指针指定的格式｡
我将演示如何显示指针的不同数据, 然后我们将看到如何使用指针｡
前面的声明创建了变量, 但没有初始化｡
那里没有任务｡
你总是想给一个指针赋值, 如果你不初始化它是非常危险的｡
因此, 您需要在声明指针时对其进行初始化｡
如果你不知道该初始化为什么, 如果它不是另一个变量的地址, 或者你没有为它动态分配内存,
你可以使用一个空指针｡
所以你可以初始化一个指针, 使它不指向任何东西｡
您可以使用null来执行此操作｡
对于指向int的指针, 你说instar p number等于null｡
Null是由标准程式库定义的常数｡
它相当于指针的零｡
意思是它没有指向任何东西｡
它保证不指向内存中的任何位置｡
这很好,
因为这意味着你不会犯任何错误, 因为你不会意外地发生缓冲区溢出, 或者写入不应该写入的内存｡
通过初始化它, 它实际上限制了你可能犯的一些错误｡
我们之前讨论过null｡ 我们讨论过空字符｡
这个概念与空指针不同｡
一个空指针意味着它没有指向任何东西, 它应该用它初始化｡
您需要为标准def添加一个include指令｡ 如果要在此处使用null定义, 请输入h｡
操作员的地址｡
如果你想将指针赋给地址, 你可以使用现有变量的地址运算符｡
所以如果你想用你已经声明过的add或者sub变量初始化你的变量, 你可以使用运算符的地址,
和号｡
我们在讨论scanf函数时已经看到了这一点｡
在这里, 我们分配了一个整数值变量99｡
我们创建了一个int类型的指针, 并给它赋值为number.
我们可以这样做,
因为number是一个int型的, 而我们创建的指针也指向一个int型的｡
所以在等号运算符之后我们要做的就是使用&号｡
所以现在p数会包含数字的地址｡
p号的初始值是变量的地址号｡
number的声明必须在存储其地址的指针的声明之前, 因为您不能给指针赋值没有分配内存的内容｡
如果你试图给指针赋值, 除非你在之后赋值, 否则这个数字不存在｡
为了给指针分配一个地址, 必须为该地址分配内存｡
否则, 编译器会抱怨｡
但是要小心, 因为指针的声明没有什么特别之处｡
可以在同一语句中声明常规变量和指针｡
所以你可以说双精度值, p值, f值｡
在这里的这个语句中,
这是唯一的第二个变量瓦尔是指针, 其他两个都只是双精度数｡
这在声明中更明确, 更明显｡
但是如果你说在星星pq中, 这意味着它们都是指针, 而它们不是｡
我们这里只有一个int指针p, 变量q就是int类型.
认为p和q都是指针是一个常见的错误｡
所以当你在同一行的许多变量上声明指针时要小心｡
使用以p开头的名称作为指针名称也是一个好主意｡
这会告诉你, 这个变量是一个指针, 只要看看它｡
所以通常你在程序的顶部声明变量, 通常在主函数里面｡
当你在程序中看到这些变量时, 你可以很容易地识别出不同的数据类型或者不同的指针类型,
因为它们有p作为前缀｡
这节课讲了如何定义, 声明一个指针, 然后把一个已有变量的地址赋给指针.
现在,
有些情况下, 你不一定要给一个现有的变量赋值指针, 也许你想分配新的内存｡
我们会在后面的课上讨论这些问题｡ 但现在, 我们要保持简单｡
我们将重点介绍如何使用整型指针以及不同的简单类型, 如双精度型或浮点型指针｡
我们将集中讨论如何分配现有的变量,
地址, 并看看它是如何工作的｡
所以让我们继续前进｡ -谢谢—谢谢