| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1121 人关注过本帖
标题:我想输出字符指针数组,求大神看一下程序哪儿错了
只看楼主 加入收藏
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
1.availzable_resource[i]在这表示地址吗?

数组和指针  关系非常密切  某种意义上来讲  通用

DO IT YOURSELF !
2014-11-26 09:30
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
2.字符指针数组available_resource[]每个元素是一个地址,为什么我把while(available_resource[i]!="\0")换成while(available_resource[i]!=NULL)就不行呢?


空指针和空字符串 应该是2个不同的概念

DO IT YOURSELF !
2014-11-26 09:31
神话嵌入式
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-10-27
收藏
得分:0 
#include<stdio.h>
int main(int argc,char *argv[])
{
    char *available_resource[]={"coulor monitor","big disk","cray","on-line drawing routhing","mouse","keyboard","power cable"};
    char **p=available_resource;
    while(**p!='\0')
        {
            printf("%s\n",*p);
            p++;
        }
    return 0;
}
为什么初始化数组的时候去掉"\0"就出问题呢?不是默认"\0"结尾吗?
2014-11-26 09:42
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
这种初始化方式就不是以\0结束  所以电脑也不知道字符串什么时候结束  就会出现溢出错误
解决办法是人为的添加\0结束标志  或者直接定义数组元素的数量

DO IT YOURSELF !
2014-11-26 09:46
神话嵌入式
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-10-27
收藏
得分:0 
回复 11 楼 wp231957
按定义字符指针数组里面存的是字符指针,那available_resource[i]就是地址,难道不是吗
2014-11-26 09:48
神话嵌入式
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-10-27
收藏
得分:0 
回复 14 楼 wp231957
谢谢了!
2014-11-26 09:51
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:1 
以下是引用神话嵌入式在2014-11-26 09:48:59的发言:

按定义字符指针数组里面存的是字符指针,那available_resource就是地址,难道不是吗



就是寻址啊  纠结这个干吗

DO IT YOURSELF !
2014-11-26 09:57
神话嵌入式
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2014-10-27
收藏
得分:0 
就是不明白while(available_resource[i]!=NULL)不可以。如果available_resource[i]是地址应该可以呀,郁闷!
2014-11-26 10:29
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1696
专家分:4295
注 册:2007-12-27
收藏
得分:1 
以下是引用书生等待在2014-11-25 14:40:59的发言:

版主说的对,另外这么写也可以
 
while(available_resource!="\0")
    {
        printf("%s\n",available_resource);
        i++;
    }
 
错误提示:++自增运算符必须使用左值,而数组名available_resource是指针常量,不能对其进行修改
负责任地说,这样写(available_resource!="\0")在这里是不对的。
字符串内容要比较需要strcmp或类似的东东。
先不说在程序里的具体意义,如果这样写的话,从语义上看是两个地址的比较,而且"\0"这个形式是个常量,它的地址是什么,或者说它有没有地址都不一定,所以不能这样写。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2014-11-26 10:46
forever74
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1696
专家分:4295
注 册:2007-12-27
收藏
得分:1 
以下是引用神话嵌入式在2014-11-26 10:29:11的发言:

就是不明白while(available_resource!=NULL)不可以。如果available_resource是地址应该可以呀,郁闷!
如果你的指针数组的最后一个元素初始化为NULL了,那就可以写while(available_resource[i]!=NULL)

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2014-11-26 10:49
快速回复:我想输出字符指针数组,求大神看一下程序哪儿错了
数据加载中...
 
   



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

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