黑马程序员技术交流社区
标题:
关于字符串存储的问题
[打印本页]
作者:
光辉岁月
时间:
2014-5-28 23:14
标题:
关于字符串存储的问题
本帖最后由 光辉岁月 于 2014-5-29 09:24 编辑
在读取字符串的时候用字符数组就会有长度的限制,用起来非常的麻烦。
那么直接用指针接收读取的字符串不就简单明了了吗,起码不用再担心长度不够了。
那为什么我看到的其他程序中大部分都用数组存储字符串,这不是很麻烦吗?
这样多简单:
#include <stdio.h>
int main(void)
{
char *str;
scanf("%s", str);
return 0;
}
复制代码
作者:
★Joean_Zhou
时间:
2014-5-28 23:21
萝卜青菜各有所爱。。。有些人喜欢用数组。不过我还是觉得指针好用
作者:
xiaodixing
时间:
2014-5-29 00:12
不行 你定义的是一个指针,应改成
#include <stdio.h>
int main(void)
{
char str[30];
scanf("%s", str);
printf("%s\n",str);
return 0;
}
作者:
从┧靇┟开始
时间:
2014-5-29 00:18
char类型的指针就是字符串,接收多少都可以
作者:
XCodeRush
时间:
2014-5-29 00:28
回答:即使这样能够通过编译,也是有问题的。因为指针并未被初始化。
用程序解释:
#include <stdio.h>
int main(void)
{
char *str; // 只是声明了指针str,但是没有初始化。
// scanf()函数把读入的字符串复制到指针str指向的内存地址中
// 但是此时str并没有被初始化,所以str可以指向内存中的任何地方。
// 程序无法知道用户输入的字符串存储在哪里,这是随机的行为,是危险的。
scanf("%s", str);
return 0;
}
复制代码
作者:
Guardian_Angel
时间:
2014-5-29 01:50
用数组来储存字符串是可以被修改的,而指针类型接收的字符串是不能不修改的是常量。而且你上面定义的那个指针变量没有初始化,会报错的。
作者:
千年的泪
时间:
2014-5-29 10:50
XCodeRush 发表于 2014-5-29 00:28
回答:即使这样能够通过编译,也是有问题的。因为指针并未被初始化。
用程序解释:
学习了{:3_66:}
作者:
天空角落
时间:
2014-5-29 11:05
涨知识啦{:2_30:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2