C语言学习笔记
指针详解:
内存中字节的编号称为地址(Address)或指针(Pointer)。地址从 0 开始依次增加,对于 32 位环境,程序能够使用的内存为 4GB,最小的地址为 0,最大的地址为 0XFFFFFFFF。
变量名和函数名为助记符,让我们在编写代码的过程中可以使用易于阅读和理解的英文字符串,不用直接面对二进制地址。
需要注意的是,虽然变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符,在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。
C语言本质就是CPU对内存地址操作。
&
来获得它的地址;str 本身就表示字符串的首地址,不需要加&。%为格式输出,
%#X
表示以十六进制形式输出,并附带前缀0X,
%p也是可以的。
数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。
这种变量称为指针变量。指针变量的值就是某份数据的地址,这样的一份数据可以是数组、字符串、函数,也可以是另外的一个普通变量或指针变量。
现在假设有一个 char 类型的变量 c,它存储了字符 'K'(ASCII码为十进制数 75),并占用了地址为 0X11A 的内存(地址通常用十六进制表示)。另外有一个指针变量 p,它的值为 0X11A,正好等于变量 c 的地址,这种情况我们就称 p 指向了 c,或者说 p 是指向变量 c 的指针。

定义指针变量:
*
是一个特殊符号,表明一个变量是指针变量,定义p 时必须带*
。而给p赋值时,因为已经知道了它是一个指针变量,就没必要多此一举再带上*,定义后可以像普通变量一样使用不要加*了
。定义指针变量时必须带*
,给指针变量赋值时不能带*
。
解引用值: