指针变量定义与一般变量的定义类似,其形式如下:
数据类型 [存储器类型1] * [存储器类型2] 标识符;
[存储器类型1] 表示被定义为基于存储器的指针,无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用三个字节,第一个字节存放该指针存储器类型的编码(由编译时由编译模式的默认值确定),第二和第三字节分别存放该指针的高位和低位地址偏移量。存储器类型的编码值如下:
存储类型I Idata/data/bdata xdata pdata Code
编码值 0×00 0×01 0xFE 0xFF
[存储类型2]用于指定指针本身的存储器空间。
char * c_ptr; int * i_ptr; long * l_ptr;
上述定义的是一般指针,c_ptr指向的是一个char型变量,那么这个char型变量位于哪里呢?这和编译时由编译模式的默认值有关,
如果Menory Model—Variable—Large:XDATA,那么这个char型变量位于xdata区:
如果Menory Model—Variable—Compact:PDATA, 那么这个char型变量位于pdata 区:
如果Menory Model——Variable——Small:DATA,那么这个char型变量位于data区。
而指针c_ptr, i_ptr, l_ptr变量本身位于片内数据存储区中。
char * data c_ptr; int * idata i_ptr; long * xdata l_ptr;
上述定义,c_ptr, i_ptr, l_ptr变量本身分别位于data ,idata,xdata区。
char data * c_ptr; //表示指向的是data区中的char型变量,c_ptr在片内存储区中;
int xdata * i_ptr; //表示指向的是xdata区中的int型变量,i_ptr在片内存储区中;
long code * l_ptr; //表示指向的是code区中的long型变量,l_ptr在片内存储区中;
char data * data c_ptr; //表示指向的是data区中的char型变量,c_ptr在片内存储区data中;
Int xdata * idata i_ptr; //表示指向的是xdata区中的int型变量,i_ptr在片外存储区xdata中;
long code * xdata l_ptr; //表示指向的是code区中的long型变量,l_ptr在片内存储区xdata中;
通过C51指针定义和应用小结-单片机-电子工程世界网.
Posted by Ian at 09:39 Tagged with: pointer
数据类型 [存储器类型1] * [存储器类型2] 标识符;
[存储器类型1] 表示被定义为基于存储器的指针,无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用三个字节,第一个字节存放该指针存储器类型的编码(由编译时由编译模式的默认值确定),第二和第三字节分别存放该指针的高位和低位地址偏移量。存储器类型的编码值如下:
存储类型I Idata/data/bdata xdata pdata Code
编码值 0×00 0×01 0xFE 0xFF
[存储类型2]用于指定指针本身的存储器空间。
char * c_ptr; int * i_ptr; long * l_ptr;
上述定义的是一般指针,c_ptr指向的是一个char型变量,那么这个char型变量位于哪里呢?这和编译时由编译模式的默认值有关,
如果Menory Model—Variable—Large:XDATA,那么这个char型变量位于xdata区:
如果Menory Model—Variable—Compact:PDATA, 那么这个char型变量位于pdata 区:
如果Menory Model——Variable——Small:DATA,那么这个char型变量位于data区。
而指针c_ptr, i_ptr, l_ptr变量本身位于片内数据存储区中。
char * data c_ptr; int * idata i_ptr; long * xdata l_ptr;
上述定义,c_ptr, i_ptr, l_ptr变量本身分别位于data ,idata,xdata区。
char data * c_ptr; //表示指向的是data区中的char型变量,c_ptr在片内存储区中;
int xdata * i_ptr; //表示指向的是xdata区中的int型变量,i_ptr在片内存储区中;
long code * l_ptr; //表示指向的是code区中的long型变量,l_ptr在片内存储区中;
char data * data c_ptr; //表示指向的是data区中的char型变量,c_ptr在片内存储区data中;
Int xdata * idata i_ptr; //表示指向的是xdata区中的int型变量,i_ptr在片外存储区xdata中;
long code * xdata l_ptr; //表示指向的是code区中的long型变量,l_ptr在片内存储区xdata中;
通过C51指针定义和应用小结-单片机-电子工程世界网.
Posted by Ian at 09:39 Tagged with: pointer