| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3620 人关注过本帖
标题:[求助]关于char数组的问题
只看楼主 加入收藏
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
 问题点数:0 回复次数:18 
[求助]关于char数组的问题
关于建立char数组,是否一定要在之前加上static?
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
char a[20];
static char b[20];
printf("%s\n%s\n",a,b);
system("pause");
return 0;
}
上面代码中,a的输出是乱码,b的输出是空。

另外就是,char数组的实际长度是不是为其中字符长度+\0?
static char a[]={"china"};
上面语句中,a[]=a[6]而不是a[5]。
搜索更多相关主题的帖子: char include void int 
2007-09-23 10:25
無邪的睡脸
Rank: 2
等 级:等待验证会员
威 望:1
帖 子:344
专家分:13
注 册:2007-9-11
收藏
得分:0 
没有初始化,所以a为乱码,b因为被定义为static,若未赋初值,系统自动赋值为空!
2007-09-23 12:28
cutboy
Rank: 1
等 级:新手上路
帖 子:120
专家分:0
注 册:2007-9-16
收藏
得分:0 
对,实际长度要加上'\0',用strlen就知道了.

2007-09-23 12:41
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
得分:0 
以下是引用cutboy在2007-9-23 12:41:49的发言:
对,实际长度要加上'\0',用strlen就知道了.

strlen?我在书上看到的是“计算字符串长度,返回值为字符串的实际长度,不包括'\0'在内。用它怎么能知道?


2007-09-23 13:03
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
得分:0 
以下是引用無邪的睡脸在2007-9-23 12:28:13的发言:
没有初始化,所以a为乱码,b因为被定义为static,若未赋初值,系统自动赋值为空!

我想知道的是,建立char型数组是否一定要初始化,即一定要加上static?


2007-09-23 13:05
栖柏
Rank: 2
等 级:论坛游民
威 望:3
帖 子:1103
专家分:17
注 册:2007-8-23
收藏
得分:0 

建议看书
变量有声明和定义加起来初始化
看书,书上有解释
你声明了一个变量
要用当然要给他赋值
不然怎么print
加static,那是静态变量
书中有解释
在这里给你解释,不如你看书明白啊
因为这书上都有啊


You have lots more to work on! Never give up!c language!
2007-09-23 13:12
zhufeifei
Rank: 1
等 级:新手上路
威 望:2
帖 子:402
专家分:0
注 册:2006-8-11
收藏
得分:0 
局部变量都要先初始化在使用,而对于全局变量和静态变量,如果不赋于初始值,系统则赋值其默认值.

在不断的拼搏与进取中,定能创造一片天地!
2007-09-23 13:29
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
得分:0 
以下是引用栖柏在2007-9-23 13:12:42的发言:

建议看书
变量有声明和定义加起来初始化
看书,书上有解释
你声明了一个变量
要用当然要给他赋值
不然怎么print
加static,那是静态变量
书中有解释
在这里给你解释,不如你看书明白啊
因为这书上都有啊

就是因为书上的概念模糊才问的么,比如说,书上出现了
static char c[10]={'I',' ','a','m',' ','h','a','p','p','y'};这个没有问题
然后我试了一下
static char c[10]={"I am happy"};这个不行。书上关于这个完全没有说明,所以我才猜测是字符串长度+'\0'

它还说“数组定义之后没有确定的值,需要在定义的时候赋值”接下来说“static表示静态的意思,有关静态变量和外部变量将在后面章节详细介绍”至于在那里介绍没有说明,我这一章都快看完了都没找到。

结果看完之后才明白,它根本什么都没讲么……

所以我才想问一下,声明一个char数组时是否前面一定要加static
就是想问一下这一点而已么。


2007-09-23 13:37
静思
Rank: 3Rank: 3
来 自:沈阳
等 级:新手上路
威 望:8
帖 子:630
专家分:0
注 册:2006-2-28
收藏
得分:0 
对于楼上所说的static char c[10]={"I am happy"}:这个不行,是因为你多了个大括号{},数组c元素的类型是char型的,而"I am happy"是一个字符串

英者自知,雄者自胜
2007-09-23 13:58
lg_mic
Rank: 1
等 级:新手上路
帖 子:55
专家分:0
注 册:2007-9-18
收藏
得分:0 
以下是引用静思在2007-9-23 13:58:25的发言:
对于楼上所说的static char c[10]={"I am happy"}:这个不行,是因为你多了个大括号{},数组c元素的类型是char型的,而"I am happy"是一个字符串

这里我想是你理解错了,跟那个没有关系。

#include <stdio.h>
#include<conio.h>
main()
{
static char c[]={"I am happy"};
static char d[11]={"I am angry"};
printf("%s\n%s\n",c,d);
getch();
}
你可以试试这个代码看有没有问题,我想说的是,在使用""给字符数组赋值的时候,占用的长度比字符实际长度多1

2007-09-23 14:09
快速回复:[求助]关于char数组的问题
数据加载中...
 
   



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

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