A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 光辉岁月 初级黑马   /  2014-5-28 23:14  /  1321 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 光辉岁月 于 2014-5-29 09:24 编辑

在读取字符串的时候用字符数组就会有长度的限制,用起来非常的麻烦。
那么直接用指针接收读取的字符串不就简单明了了吗,起码不用再担心长度不够了。
那为什么我看到的其他程序中大部分都用数组存储字符串,这不是很麻烦吗?
这样多简单:
  1. #include <stdio.h>
  2. int main(void)
  3. {
  4.     char *str;
  5.     scanf("%s", str);
  6.     return 0;
  7. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
wanzhu159 + 1

查看全部评分

7 个回复

倒序浏览
萝卜青菜各有所爱。。。有些人喜欢用数组。不过我还是觉得指针好用
回复 使用道具 举报
不行  你定义的是一个指针,应改成
#include <stdio.h>
int main(void)
{
    char str[30];
    scanf("%s", str);
        printf("%s\n",str);
    return 0;
}
回复 使用道具 举报
char类型的指针就是字符串,接收多少都可以
回复 使用道具 举报
回答:即使这样能够通过编译,也是有问题的。因为指针并未被初始化。

用程序解释:

  1. #include <stdio.h>

  2. int main(void)
  3. {
  4.     char *str;  // 只是声明了指针str,但是没有初始化。
  5.    
  6.     // scanf()函数把读入的字符串复制到指针str指向的内存地址中
  7.     // 但是此时str并没有被初始化,所以str可以指向内存中的任何地方。
  8.     // 程序无法知道用户输入的字符串存储在哪里,这是随机的行为,是危险的。
  9.     scanf("%s", str);
  10.    
  11.     return 0;
  12. }
复制代码
回复 使用道具 举报 1 0
用数组来储存字符串是可以被修改的,而指针类型接收的字符串是不能不修改的是常量。而且你上面定义的那个指针变量没有初始化,会报错的。
回复 使用道具 举报 1 0
XCodeRush 发表于 2014-5-29 00:28
回答:即使这样能够通过编译,也是有问题的。因为指针并未被初始化。

用程序解释:

学习了{:3_66:}
回复 使用道具 举报
涨知识啦{:2_30:}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马