在KEIL C中,定义 一个指针变量如"unsigned char p;"这个变量为什么即可以指向数据区,又可以指向程序区呢?如果我编写一个函数如 (void)IncUartRxP(unsigned char* p) { while(*p != 0) { sbuf = *p; p++; DlyMs(20); } } 可以这样使用: unsigned char code initok[] = "InIt Ok"; //程序区 unsigned char data test[] = ['T','e','s','t',0];//数据区 IncUartRxP(initok); IncUartRxP(test); 编译器没有给出警告或者错误信息,根据结果来看,是可以正常执行的, 但是这样讲不通啊,函数IncUartRxP是固定的,当他执行如sbuf = *p; 的时候,到底是从哪里取数据呢, DATA 区,还是CODE区呢? 请指点迷津啊
|