注册 登录
编程论坛 C++教室

还是指针

mfkblue 发布于 2013-01-11 12:18, 382 次点击
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
    char c[5]="work";
    const char *p=c;
    printf("%s\n",c); //输出work
    printf("%s\n",p); //输出work
    p="lish";
    printf("%s\n",c); //输出work
    printf("%s\n",p); //输出lish
    getchar();
    return 0;
}

下面输出应该是两个lish吧,咋字符串c里面的值没有改动,难道p又指向一个新的地址?
5 回复
#2
zklhp2013-01-11 12:22
    char * const p=c;

assignment of read-only variable 'p'

这样能限制p不能指向新的地址 编译就不过了
#3
taohua3002013-01-11 13:44
在getchar();上面加
printf("%ld\n",p);
printf("%ld\n",c);

运行一下
知道了么
#4
mfkblue2013-01-11 20:53
回复 3楼 taohua300
#include "stdio.h"
void main( )
{
   
    char c[5]="work";
    const char *p=c;
    printf("%s\n",c); //输出work
    printf("%s\n",p); //输出work
    printf("%ld\n",p);
    printf("%ld\n",c);
    p="lish";
    printf("%s\n",c); //输出work
    printf("%s\n",p); //输出lish
    printf("%ld\n",p);
    printf("%ld\n",c);

    getchar();
   
}
不知道,给p赋值前输出是一样的,给p赋值后不一样了,跟我以前的没加这两句输出的效果一样啊,输出格式不同而已,
#5
taohua3002013-01-15 10:03
p和c的内存地址是不一样的

不知道你是不是要验证const关键字的作用
如果是的话
再仔细看一下const对指针修饰到底怎么回事
#6
allmy342013-01-17 10:48
const char *p=c;限制了p不能修改c的值
p="lish",然后p指向了"lish"。
1