unsigned char * p = "EDNChina";
这样表达,p不知指向了何处;
unsigned char p[] = "EDNChina";
这样就没问题了。
unsigned char String[] = "EDNChina";
unsigned char *p = String;
这样也没问题。
这是为何?
可能原因,C18把常量字符串全部储存在程序内存区,默认的指针是指向数据储存器的,和指向程序存储器的不兼容。测试程序:
#include <stdio.h>
#pragma config WDT = OFF
void main(void)
{
unsigned char *p1 = "1";
rom unsigned char *p2 = "2";
printf("aa %c \n", *p1);
printf("bb %c \n", *p2);
while(1);
}
结果:
文章评论(0条评论)
登录后参与讨论