标签:cpu null 数组的指针 部分 turn 链接 区域 代码 变量
CPU 只能通过地址来取得内存中的代码和数据,程序在执行过程中会告知 CPU 要执行的代码以及要读写的数据的地址。如果程序不小心出错,或者开发者有意为之,在 CPU 要写入数据时给它一个代码区域的地址,就会发生内存访问错误。这种内存访问错误会被硬件和操作系统拦截,强制程序崩溃,程序员没有挽救的机会。
CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。
指针的长度由地址总线决定,也就是说CPU的寻址能力。
不要说是字长,字长是根据数据总线决定的。有的机器数据总线和地址总线不一定都是一样的
像现在64位机器中很对地址总线都是32位的
#include <stdio.h>
可以看到int (*p)[2] = arr2;(数组名弱化成指针,即数组首地址)两者是一致的
p[0]即是数组第一列首地址首个元素arr2[0][0]的地址,取值就是1
p++指向arr2[1],即是数组第二列首地址首个元素arr2[1][0]的地址,取值就是3
标签:cpu null 数组的指针 部分 turn 链接 区域 代码 变量
原文地址:https://www.cnblogs.com/ming-fei/p/14589438.html