| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 286 人关注过本帖
标题:关于指向数组的指针小代码帮忙解释下。谢谢
只看楼主 加入收藏
薄冰玄雨
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-4-18
收藏
 问题点数:0 回复次数:3 
关于指向数组的指针小代码帮忙解释下。谢谢
#include<stdio.h>
#include<string.h>
int main(void)
{
    char *str[2] = {"****","****"};
    while(*str[0] != '\0')
    {
         printf("%s\n",str[1] + strlen(str[0]) - 1);
         str[0]++;
    }
    return 0;
}
输出的结果是
*
**
***
****
为什么?不懂
搜索更多相关主题的帖子: return 
2011-04-22 23:13
薄冰玄雨
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-4-18
收藏
得分:0 
#include<stdio.h>
#include<string.h>
int main(void)
{
    char *str[2] = {"****","****"};
    str[0] += 3;
    printf("%s",str[0])
    return 0;
}
输出结果:
*
很奇怪。。
2011-04-22 23:22
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
收藏
得分:0 
这个不是指向数组的指针,而是指针数组
str[0] 和 str[1] 分别只想两个字符串的起始位置,如下:

str[0]
  \/
  * * * * '\0'    * * * * '\0'
                  /\
                str[1]

strlen(str[0]) 返回的是 str[0] 所指向的字符串的长度,即上面所示的 str[0] 所知位置到 '\0' 的距离
str[0]++ 会使 str[0] 向右移一个字符,也就意味着 strlen(str[0]) 减 1

剩下的部分楼主自己应该能想明白了吧

[ 本帖最后由 voidx 于 2011-4-23 01:21 编辑 ]
2011-04-22 23:25
薄冰玄雨
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-4-18
收藏
得分:0 
回复 3楼 voidx
谢谢,大侠,有感觉了。
2011-04-22 23:31
快速回复:关于指向数组的指针小代码帮忙解释下。谢谢
数据加载中...
 
   



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

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