指针访问数组出错

1470阅读 0评论2014-03-21 Yiran_Linux
分类:C/C++


Code One
#include
int main(int argc,char *argv[])
{
    char *s="123456";
    while(*s)
    {
        printf("%c ",*s);
        *s += 1;
    }
    return 0;
}

Code Two
#include
int main(int argc,char *argv[])
{
    char s[] = "123456";
    int i = 0;
    while(s[i])
    {
        printf("%c ",s[i]);
        i++;
    }
    return 0;
}

上面两个代码编译时都不会发生错误,可是代码一会有一个警告[warning] deprecated conversion form string constant to 'char'[-Wwrite-strings]
在32位机,指针占4个字节,char型占一个字节,因此尝试将字符赋值给指针时会给出一个警告。运行时,可能会发生访问越界。
上一篇:gdb调试命令
下一篇:算法笔试题