| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:发个图,比比看
只看楼主 加入收藏
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
结帖率:100%
收藏
已结贴  问题点数:1 回复次数:7 
发个图,比比看
#include <stdio.h>

void main()
{
    int i;
    char c[] = "1234567";
    for( i = 0; c[i] != '\0'; i++ )
        printf("%c ", c[i] );
    putchar('\n');
    printf("%d", i);
    putchar('\n');

    int j;
    char b[7] = {'1','2','3','4','5','6','7'};
    for( j = 0; b[j] != '\0'; j++ )
    {
        printf("%c ", b[j] );
        printf("%d\n", j);
    }
    putchar('\n');
    printf("%d\n", j);

    int k;
    char d[] = {'1','2','3','4','5','6','7'};
    for( k = 0; d[k] != '\0'; k++ )
        printf("%c ", d[k] );
    putchar('\n');
    printf("%d\n", k);

    int m;
    char e[7] = {'1','2','3','4','5','6'};
    for( m = 0; e[m] != '\0'; m++ )
        printf("%c ", e[m] );
    putchar('\n');
    printf("%d\n", m);   
   
   
}
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: 比比看 
2010-03-21 09:57
hziee
Rank: 4
等 级:业余侠客
帖 子:64
专家分:257
注 册:2010-3-12
收藏
得分:0 
主要还是了解数组存储方式:
char c[] = "1234567" 采用字符串,c实际为{"1","2","3","4","5","6","7","\n"};
char b[7] = {'1','2','3','4','5','6','7'}和char d[] = {'1','2','3','4','5','6','7'};这两个存储内容一样。
char e[7] = {'1','2','3','4','5','6'}实际内容与长度不符,所以会在后面添加1个(或者多个)"\n"直到满足数组长度。


2010-03-21 11:16
csj_65
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:63
专家分:163
注 册:2010-3-12
收藏
得分:0 
为什么k的for循环后k为9呢?不解
2010-03-21 11:17
mikelr
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:161
注 册:2010-3-17
收藏
得分:0 
int j;
    char b[7] = {'1','2','3','4','5','6','7'};
    for( j = 0; b[j] != '\0'; j++ )
    {
        printf("%c ", b[j] );
        printf("%d\n", j);
    }

会造成数组越界!
2010-03-21 11:36
hziee
Rank: 4
等 级:业余侠客
帖 子:64
专家分:257
注 册:2010-3-12
收藏
得分:1 
以下是引用mikelr在2010-3-21 11:36:33的发言:

 int j;
    char b[7] = {'1','2','3','4','5','6','7'};
    for( j = 0; b[j] != '\0'; j++ )
    {
        printf("%c ", b[j] );
        printf("%d\n", j);
    }

会造成数组越界!
数组越界知道,但为什么是9,不是10,20,30呢?
个人理解是这样:
由于我们的系统一般为32位,而char类型为1字节即8位,所以char数组申请内存空间时,是以32/8,即4字节为一个单位。也就是说按照上面的题目,如果长度为7,则输出9,如果长度为9,则输出13?
望高人说明一下?

[ 本帖最后由 hziee 于 2010-3-21 12:07 编辑 ]
2010-03-21 11:52
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
回复 2楼 hziee
不足的是加\0 自动加的
所以在定义数组的长度大于你实际需要的时候就可以用
 != '\0'来判断 是否结束
2010-03-23 12:42
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
#include <stdio.h>

void main()
{
    int i;

    char c[4] = {'1','2','3','4'};
    for(i = 0 ; c[i] != '\0'; i++)
    {
        printf("%c ", c[i]);
        printf("%d ", i);printf("\n");
    }
   

    char d[4] = {'1','2','3','4'};
    for(i = 0 ; d[i] != '\0'; i++)
    {
        printf("%c ", d[i]);
        printf("%d ", i);printf("\n");
    }
   
}
图片附件: 游客没有浏览图片的权限,请 登录注册
2010-03-23 12:57
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:0 
这种应该是什么问题?
2010-03-23 12:59
快速回复:发个图,比比看
数据加载中...
 
   



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

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