C语言之指针

时间:2021-03-30 13:10:04   收藏:0   阅读:0

没有内存就没有指针

CPU 只能通过地址来取得内存中的代码和数据,程序在执行过程中会告知 CPU 要执行的代码以及要读写的数据的地址。如果程序不小心出错,或者开发者有意为之,在 CPU 要写入数据时给它一个代码区域的地址,就会发生内存访问错误。这种内存访问错误会被硬件和操作系统拦截,强制程序崩溃,程序员没有挽救的机会。

CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。

指针的长度由地址总线决定,也就是说CPU的寻址能力。
不要说是字长,字长是根据数据总线决定的。有的机器数据总线和地址总线不一定都是一样的
像现在64位机器中很对地址总线都是32位的

指针运算符 * (常和去地址操作符&一起出现)

数组指针,和指针数组

可以看到int (*p)[2] = arr2;(数组名弱化成指针,即数组首地址)两者是一致的
p[0]即是数组第一列首地址首个元素arr2[0][0]的地址,取值就是1
p++指向arr2[1],即是数组第二列首地址首个元素arr2[1][0]的地址,取值就是3

void*和NULL

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!