在写C语言程序中,如果处理的对象如果只有一个元素,那么可以定义一个变量来存储,比如inta,这个命令就是告诉编译器,你让计算机给我规划处一段内存单元,这个内存单元的大小是2个字节,这块2个内存单元的名字叫做a,这样就完成了一个变量的定义,给后续使用这段内存单元进行存储数据、读取数据提供了物理空间。
那么,如果要处理的元素是同意类型,但数量很多呢,比如一个班级有50个学生,50个学生的总成绩,就有50个数值,那么不可能我们要声明50个变量来一一处理,于是C语言中就有了数组的概念,就是通过定义一个数据类型,让编译器告诉CPU,你给我规划处连续50个内存单元,来存储我要处理的50个元素,就可以用inta[50]这个命令来定义。当我们需要处理数组中的数据时,可以定义一个指针变量int*p;p=a;这样一个指针变量存储着数组的首地址,通过指针就方便处理这些数据。那么C语言中的指针和汇编的指针有什么关联呢?
那么我们知道,计算机只能识别2进制的...机器码,我们写的C语言,最终也都被编译成了...先编译成汇编、然后再编译成机器码...那么我们看下在汇编里,寄存器间接寻址,又和C语言中的数组和指针有什么关联,定义了一块连续存储变量的内存单元,那访问这些内部单元的地址,然后取出地址里的内容,在底层又是怎么运作的,我们知道,在C语言中定义了数组之后,一次性可以存储多个元素,那么如果要对这多个元素进行操作的话,又怎么样呢,我们通常用for循环来进行处理,有多少个元素,我们再定义多少个索引号i。那么for(i=0;i元素个数;i++){表达式};这个语句就是对数组每个元素进行操作的循环指令。当这个命令执行被编译后,在汇编里又是什么情况?我们看一个汇编程序:
转载请注明:http://www.0431gb208.com/sjszyzl/4754.html