原创 MPLAB C18学习 指向字符串的指针

2009-7-19 15:21 2699 3 3 分类: MCU/ 嵌入式

 


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);
}


结果:1428c777-1655-4d96-986b-17301571d7b9.JPG

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条