首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教一个让我很困扰的问题 [已结贴,结贴人:happy446]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • happy446
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    • 揭帖率:
    发表于:2008-05-10 23:10:57 楼主
    定义一个字符窜有两种方法 char a【256】=“dfdf”;或者char *a="dfdf";
    然后下面一个函数 void f(char *)
    经常出现 用第一种定义不能通过,改成第二种第一通过了
    用第二种定义通过了,第一种定义通过了

    我的理解是第一个定义的指针a是常指针,不能出现a++之类的语句
    但是第二种定义什么情况下会通不过编译,必须用第一种定义呢??
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • HelloDan
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-10 23:14:271楼 得分:0
    char *a="dfdf";

    上面的相当于 const char* a="dfdf";
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jwpl190
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-10 23:25:222楼 得分:10
    char *a="dfdf";  是一个定义一个指针,它指向字符串常量.
    而字符串常量不能修改.
    char b[256]=“dfdf”可以修改里面的内容.

    a[1] = 'a' //系统错误
    b[1] = 'a' //正确
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • zhoujie99
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 00:33:323楼 得分:10
    char a【256】=“dfdf”; //a是字符数组,数组里元素都是char类型的变量,
    即d、f、d、f是4个char类型的变量,分别存放在a[0]-a[3]中,可以随意改变
    但a表示数组首地址,一旦定义,就固定不变,字符数组首地址都是常量
    所以a++出错,++不能用于常量

    char *a="dfdf"; // a是指针,指向char类型数据的地址,就是“dfdf”的首地址,
    但是此处“dfdf”是一个字符串常量,不能改这4个字母,因为他们都在常量区
    a指向该字符串常量的首地址,所以不能通过a去改变这4个字母,只能读出,不能写入
    *a='h' ;//error 写入则错
    *(a+1)='h'; 等价于 a[1]='h';//error
    char ch=*a;//ok 可以读取数据
    但a是个指针变量,可以随意加减,甚至int i; a=&i都可以,因为a是个指针变量,可变的
    a++也合法,只是指向的内容是个常量,即d、f、d、f不可变罢了

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Treazy
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 01:31:304楼 得分:0
    楼主看下指针和数组的区别!

    另外只读数据区与可读写数据区的区别
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • xiaolajiyige
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 15:52:535楼 得分:0
    char a[256]={"asdfafdsa"};这样就行了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • well4u
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 16:53:576楼 得分:0
    3楼仁兄回复很透彻,长见识了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • f22fbi
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 17:18:167楼 得分:0
    学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • nuaacj8888
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 17:29:038楼 得分:0
    学习了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chenzhp
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 17:33:499楼 得分:0
    其实,有时候仔细看一下书就知道了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • guocai_yao
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 18:22:4410楼 得分:0
    引用 9 楼 chenzhp 的回复:
    其实,有时候仔细看一下书就知道了
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • limingjiu
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 21:20:4911楼 得分:0
    引用 7 楼 f22fbi 的回复:
    学习了

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • andywiliang
    • 等级:
    • 可用分等级:
    • 总技术专家分:
    • 总技术专家分排名:
    发表于:2008-05-11 21:27:5012楼 得分:0
    帮顶...................
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved