#include<cstdlib> #include<cstdio> #include<iostream> using namespace std; int main() { int a; //编译器分配 4个字节的空间 int b[10]; ////编译器分配 40个字节的空间 int *p; a = 10; printf("%d\n\n", &a); //275223 *((int*)2752232) = 300;//间接赋值 直接给地址 cout << a << "\n\n"; { p = &a; *p = 300; } cout << "b:" << b << ", b+1:" << b+1 << ", &b" << &b << ", &b+1" << &b+1; return 0; }
数据类型只是固定内存大小的别名,我们通过数据类型定义一个变量,那么变量其实就是一段连续内存空间的别人。我们通过变量向内存中读写数据。我们可以向上定义一个a直接让a=10,那么就是直接修改它的数据类型;既然我们通过变量修改内存上的数据,那么我们可以直接得到a在内存的地址,间接的修改a的值,也可以通过一个变量间接赋值。
数据类型的标示意义:
数据类型的所占的字节数可以这样理解,当我们写作文的时候,必须了解到一个字占多少格吧,方便我们书写和研读,这是一个道理,只有定义好了数据类型,知道相应的 字节范围,才能更好的存储数据,防止数据溢出(就相当于写作文时我们的纸张不够用),我们才能更方便的使用。
我们用数据类型定义数组的时候,int b[10] 编译器就是分配40个字节空间给它,b代表的是数组的首元素的地址,而&b代表的是整个数组的地址。因而&b+1的到值是在内存空间中数组b之后的内存空间的值。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/fk5431/article/details/47663171