关于C的字符指针问题
char *mm = "i love fishc.com!";char *gg = NULL;
while (*gg++ = *mm++);
这样写为什么不行呢? 求解 你这条While语句想做的就是将一个字符写入到一个0地址内存中,这是不允许的。。 my_angel 发表于 2014-1-13 11:44 static/image/common/back.gif
你这条While语句想做的就是将一个字符写入到一个0地址内存中,这是不允许的。。
NULL是0地址? pro-serv 发表于 2014-1-13 11:45 static/image/common/back.gif
NULL是0地址?
NULL是宏定义,也就是0 my_angel 发表于 2014-1-13 11:48 static/image/common/back.gif
NULL是宏定义,也就是0
野指针的成因主要有三种:
一、指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。
#include "stdio.h"
void main()
{
char *mm = "i love fishc.com!";
char *gg = NULL;
printf("%d\n", mm);
printf("%d\n", gg);
printf("%c\n", *mm);
while ( *mm != NULL)
{
*mm++;
printf("%c\n", *mm);
}
while ( *gg = NULL)
{
*gg++;
printf("%c", *gg);
}
// while (*gg++ = *mm++);
// printf("%s", *mm);
}
你可以自己调试看看。这是我修改了的。你*gg++,越界访问了(即非法访问内存地址了),会出现内存地址非法访问(Access volation)。更高深的解释我也不太清楚~,同求详解~ Famouslingyun 发表于 2014-1-13 13:50 static/image/common/back.gif
#include "stdio.h"
void main()
谢谢各位,NULL的值是0 Famouslingyun 发表于 2014-1-13 13:50 static/image/common/back.gif
#include "stdio.h"
void main()
while ( *gg = NULL)你这句是什么意思?赋值吗? 这个不错,用一阶段就会了 char *gg = NULL;
简单的说吧,是你这个gg 没有指向某个内存空间,没有内存来存放数据呢,好比你带MM去宾馆开房,前台MM给了你一把开不了门的钥匙 牛头的主人 发表于 2014-1-13 22:20 static/image/common/back.gif
while ( *gg = NULL)你这句是什么意思?赋值吗?
sorry,手抖了一下,少了一个=号。原意是判等符号~谢谢提醒~
页:
[1]