浅析C语言中的变量修饰符

目录

一、修饰符类型

二、变量定义

三、指针变量与存储区域关系

一、修饰符类型

51单片机采用哈佛结构。内存空间编址有重叠。可以在不同总线上定义不同的变量。在KEIL C51中定义了data、idata、xdata、code几种域修饰符。这些修饰符决定了变量访问方式。

data:固定指前面0x00-0x7F的128个RAM,可以用acc直接读写,速度最快,生成的代码也最小。

idata:固定指前面0x00-0xFF的256个RAM,其中前128和data的128完全相同,只是访问的方式不同。

xdata:外部扩展RAM。

code:ROM。

二、变量定义

对变量进行声明时可以指定变量的存储类型如:uchar data xdata uchar x相等,都是在片内RAM区分配一个字节的空间。

同样对于指针变量的声明,因涉及到指针变量本身的存储位置和指针所指向的存储位置不同而进行相应的存储区类型关键字的声明。

如下一句代码,表示的是:指在RAM区分配一个指针变量(“*”号后的关键字的作用),而且这个指针本身指向xdata区(“*”前xdata关键字的作用)

三、指针变量与存储区域关系

定义如下变量:

第一种情况:是指在片内RAM分配一个指针变量(“*”号后的data关键字的作用),而且这个指针本身指向xdata区(“*”前xdata关键字的作用)。这种定义方式访问效率最高。

第二种情况:是指在idata区域分配一个指针变量,指针变量指向xdata区域。这种访问效率不如第一种。

第三种情况:是指在xdata区域分配一个指针变量,指针变量指向xdata区域。这种访问效率不如第二种。

第四种情况:这种定义方式是错误,该指针变量只能访问data区域,无法访问xdata区域。

欢迎转发分享给需要的好友!

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
C语言,||和|都是用于条件判断的逻辑运算符,但它们有着不同的作用和使用方式。 - ||是逻辑或运算符,用于连接两个条件,只要其一个条件为真,整个条件表达式就为真。如果第一个条件已经为真,那么不再计算第二个条件,因为无论第二个条件的结果如何,整个表达式都为真。这种情况下,我们可以说||是“短路或”运算符。 - |是按位或运算符,用于对两个操作数的每个对应位进行或运算。它将两个二进制数的每个位都进行或操作,生成一个新的二进制数。 因此,||和|的区别在于它们的功能和用途不同。||用于逻辑条件判断,而|用于位运算。在条件语句,应该使用||来进行逻辑判断,而不是使用|进行位运算。 这是因为如果你使用|进行逻辑判断,它将对两个条件的每个位进行或运算,而不是对整个条件进行判断。这可能会导致错误的结果。所以,为了保证正确的逻辑判断,应该始终使用||而不是|。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [浅析C语言堆和栈的区别](https://download.csdn.net/download/weixin_38672731/12796316)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [必须知道的C语言知识细节:|和||、&和&&区别](https://blog.csdn.net/qq_43351159/article/details/107516529)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [C语言——| 和 ||——& 和 && 的区别用法](https://blog.csdn.net/liu17234050/article/details/104178651)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值