| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 382 人关注过本帖
标题:还是指针
只看楼主 加入收藏
mfkblue
Rank: 5Rank: 5
等 级:职业侠客
帖 子:472
专家分:343
注 册:2008-12-21
结帖率:96.25%
收藏
已结贴  问题点数:20 回复次数:5 
还是指针
#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又指向一个新的地址?
搜索更多相关主题的帖子: 字符串 return include 
2013-01-11 12:18
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:10 
    char * const p=c;

assignment of read-only variable 'p'

这样能限制p不能指向新的地址 编译就不过了
2013-01-11 12:22
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:10 
在getchar();上面加
printf("%ld\n",p);
printf("%ld\n",c);

运行一下
知道了么

个性太多,无法显示
2013-01-11 13:44
mfkblue
Rank: 5Rank: 5
等 级:职业侠客
帖 子:472
专家分:343
注 册:2008-12-21
收藏
得分:0 
回复 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赋值后不一样了,跟我以前的没加这两句输出的效果一样啊,输出格式不同而已,
2013-01-11 20:53
taohua300
Rank: 12Rank: 12Rank: 12
来 自:光
等 级:贵宾
威 望:14
帖 子:1636
专家分:3906
注 册:2009-3-11
收藏
得分:0 
p和c的内存地址是不一样的

不知道你是不是要验证const关键字的作用
如果是的话
再仔细看一下const对指针修饰到底怎么回事

个性太多,无法显示
2013-01-15 10:03
allmy34
Rank: 2
等 级:论坛游民
帖 子:14
专家分:19
注 册:2012-12-29
收藏
得分:0 
const char *p=c;限制了p不能修改c的值
p="lish",然后p指向了"lish"。
2013-01-17 10:48
快速回复:还是指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012571 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved