cpu进行操作的都是地址 *号在c语言中的作用
2016-11-28 22:25
211 查看
CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。
假设变量 a、b、c 在内存中的地址分别是 0X1000、0X2000、0X3000,那么加法运算c = a + b;将会被转换成类似下面的形式:
0X3000 = (0X1000) + (0X2000);
( )表示取值操作,整个表达式的意思是,取出地址 0X1000 和 0X2000 上的值,将它们相加,把相加的结果赋值给地址为 0X3000 的内存
在我们目前所学到的语法中,星号*主要有三种用途:
表示乘法,例如int a = 3, b = 5, c; c = a * b;,这是最容易理解的。
表示定义一个指针变量,以和普通变量区分开,例如int a = 100; int *p = &a;。
表示获取指针指向的数据,是一种间接操作,例如int a, b, *p = &a; *p = 100; b = *p;。
假设变量 a、b、c 在内存中的地址分别是 0X1000、0X2000、0X3000,那么加法运算c = a + b;将会被转换成类似下面的形式:
0X3000 = (0X1000) + (0X2000);
( )表示取值操作,整个表达式的意思是,取出地址 0X1000 和 0X2000 上的值,将它们相加,把相加的结果赋值给地址为 0X3000 的内存
在我们目前所学到的语法中,星号*主要有三种用途:
表示乘法,例如int a = 3, b = 5, c; c = a * b;,这是最容易理解的。
表示定义一个指针变量,以和普通变量区分开,例如int a = 100; int *p = &a;。
表示获取指针指向的数据,是一种间接操作,例如int a, b, *p = &a; *p = 100; b = *p;。
相关文章推荐
- C语言 为什么数组名(数组首地址)不能进行加减操作?
- C语言学习9: malloc动态内存存储,动态内存分配去空格字符增长版,动态内存分配去符号incr增长版,型参和返回值都是int型的函数的指针,main函数的地址也可以用指针指向,typedef定义函数指针,函数定义与嵌套的作用,返回函数指针类型,const作用
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- C语言对位进行操作(增删查改)
- C语言,内存对齐,内存分配,地址操作,结构体(二)
- Android AlarmManager 定时闹钟实现在CPU休眠状态下进行业务操作
- C语言进行二进制文件的读写操作(fopen,fwrite,fread)
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- C语言编程中对目录进行基本的打开关闭和读取操作详解
- android执行远程地址,就会报android.os.Net..... 这个原因是网络操作不能在主线程进行
- C语言,内存对齐,内存分配,地址操作,结构体(一)
- Linux I2C 对16位寄存器地址 进行读写操作
- C语言里,写好了一个文件保存到了硬盘中,下次打开这个文件时,怎样才能返回这个文件的首地址以便下一步的操作?
- *号在C语言格式化字符串中的作用
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- java中所有的操作出了基本类型以外,都是对引用进行的操作。reference
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- 用C语言操作MySQL数据库,进行连接、插入、修改、删除等操作
- C语言中如何对串口进行操作
- 为什么说在KMP算法中文本串中的每个字符都是需要进行比较操作的?