c语言中有关_at_使用的问题及指针变量

是这样的
uchar data *port _at_ 0x7F;
uchar data a;
函数名;
{... ...其中有这么一段
a=0x00;
port=(uchar data*)a;
数组=*port;
port++;
}
这里有2个问题:1 *port_at_0x7F是指针变量,那么这个指针变量的地址是不是从0x7F开始?
2 以上程序中的port++;是不是7F+1变成80?(先不管*port里面是什么)

_at_ 并非C语言的普通语法,而是Cx51特有的语法,属于嵌入式C的关键字,用于将特定变量存放在指定的绝对地址中。这句话有两个词语要格外注意:
1、变量:即函数和位变量不能定义在绝对地址;
2、绝对地址:要考虑你的物理内存到底有多大,要符合实际情况,不能超出实际边界。
接下来回答你的两个问题:

1、是的。
2、不是,port++到底加了多少,要由port是什么类型的指针来决定。以32位系统举例,如果是
int *port;

那么port++将自增4个字节。如果是double *port; 那么port++将自增8个字节。
你的是uchar data *port; 不知道port是什么类型的指针,所以加多少我不知道。追问

uchar data *port;这个定义,指针变量不是无符号字符型吗?

追答

对不起,我不清楚这个data是做什么用的,
如果是无符号字符型,直接uchar *port; 不就可以了嘛。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-26
1,不能叫从0x7f开始,是该指针变量放在0x7F地址
2,该指针变量赋值为0之后,在自加,不是0x80,是0x01
第2个回答  2013-08-26
1 是
2 指针 可以 用来 ++;( *) 取这个地址上的数据

c语言中有关_at_使用的问题及指针变量
_at_ 并非C语言的普通语法,而是Cx51特有的语法,属于嵌入式C的关键字,用于将特定变量存放在指定的绝对地址中。这句话有两个词语要格外注意:1、变量:即函数和位变量不能定义在绝对地址;2、绝对地址:要考虑你的物理内存到底有多大,要符合实际情况,不能超出实际边界。接下来回答你的两个问题:1...

C语言指针有关问题?
需要注意的是,定义时的int *t中的t代表一个内存地址,这个地址指向的是一个整型数据。若有int *t=5 , t表示内存中指向一个整型数据的地址,此时才能单独用*t,就是表示取出t这个地址中所表示的数,那么就是5。

C语言中的指针问题到底是怎么回事~
以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区域的首地址。 指针所指向的内存区和指针所指向的类型是两个完全不同的概念。在例一中,指针所指向的类型已经有了,但由于指针还未初始化,所以它所指向的内存...

C语言指针变量问题
这就是指针有趣的地方所在,它可以直接控制地址空间。ptr[i]的意思就是 就和*(ptr+i)一样。所以scanf的时候可以直接往ptr[i]这个地址放东西。类似的,char *p也可以变成数组,只要你给了他空间。这个在数据结构和算法里面用得很多,也很有意思,不过容易把自己绕晕。

C 语言 指针变量的定义问题
指针变量有三个属性:(1)该指针变量指向的变量的类型。如i_pointer指向的变量i是整型。(2)该指针变量在内存中占多少内存单元。如i_pointer占两个内存单元,称为“近指针”,用near表示。如果该变量在内存中占4个内存单元,称为“远指针”,用far表示。如果未指定near或far,缺省是near。(指针...

c语言中指针变量的作用?
include<stdio.h> int main(){int num;double sum = 0;int count = 0;while(scanf("%d", &num) && num != -1)\/\/输入-1停止} {sum += num;count++;} printf("%f", sum \/ count);return 0。

c语言变量的地址和指针
指针是C语言中的一个重要概念,它是一种特殊的变量,用于存储其他变量的地址。指针变量本身也占用内存空间,但它里面存放的值是另一个变量的地址。通过使用指针,我们可以间接地访问和操作其他变量。指针的定义形式为“类型名 *指针变量名”,例如`int *p;`就定义了一个指向整型变量的指针`p...

c语言程序指针问题
二、指针变量赋值问题1、指针赋值带来的内存丢失在C语言中指针之间是可以相互赋值的,但是使用不当可能会造成部分内存的“丢失” ,即这部分内存空间不能再被该任何程序访问。如: main(){float *a, *b;a=(float)malloc( sizeof(...

c语言指针问题
(2),对于*P1=*P2 操作之前,一定要先将P1和p2先指向变量。还有*p=3之前,也要先把p指向一个变量。指针就是一个指向地址的变量,使用之前需要先给它赋值,也就是先将将一个变量的地址赋值给它,这个时候指针里面存的就是这个变量的地址。理解了指针的概念,上面这些问题就好理解了~...

浅谈C语言指针的四要素
在构建C语言程序时,指针是一种强大且不可或缺的工具,理解其使用和特性是编程成功的关键。本文将深入探讨C语言中指针应用的四个核心要素,旨在帮助开发者更有效地利用指针功能。首先,理解变量是C语言程序中的基本组成单位。每个变量都有一个特定的名称和存储在内存中的值。在C语言中,变量可以分为多个...

相似回答