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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 触底反弹   /  2015-11-11 14:56  /  3016 人查看  /  31 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

你把char *str改成char *str=NULL,试试对不对
回复 使用道具 举报
cube川 发表于 2015-11-12 11:02
你把char *str改成char *str=NULL,试试对不对

之前我试过,不行的
回复 使用道具 举报
你是想定义一个字符串指针,但是字符串指针指向的字符串是保存在常量区的,你可以初始化的时候定义,
char *str = “hello”; 或者也可以给他重新指向 str =  “world”;但是不能使用scanf函数给他赋值。因为常量区是只读的。你只能定义一个字符串数组 char *str[]; 这个是可以使用scanf函数输入的。
回复 使用道具 举报
black747521 发表于 2015-11-12 13:11
你是想定义一个字符串指针,但是字符串指针指向的字符串是保存在常量区的,你可以初始化的时候定义,
char  ...

恩恩  理解了,就是定义一个指针数组指向一个匿名指针吧,不过试过还是报错了,编译通过了但输入值后运行报错了
回复 使用道具 举报
触底反弹 发表于 2015-11-12 13:14
恩恩  理解了,就是定义一个指针数组指向一个匿名指针吧,不过试过还是报错了,编译通过了但输入值后运行报 ...

定义指针数组是什么鬼,怎么会用到指针数组。
回复 使用道具 举报
black747521 发表于 2015-11-12 13:17
定义指针数组是什么鬼,怎么会用到指针数组。

我是这么理解的,char *str[]不是一个指针数组吗?抱歉,c也才刚开始复习,搞不清楚了
回复 使用道具 举报
错误的原因是:str是一个野指针,他并没有指向某一块内存空间,所以不允许这样写。如果想这样写的话改成这样
char *str=(char *)malloc(100);这样就行了,手动分配一块内存空间,然后再输入
回复 使用道具 举报
必须是数组才能这样,字符指针是常量,不能修改。
回复 使用道具 举报
poxiao 中级黑马 2015-11-12 20:09:32
29#
char *str如果你不在定义的时候给他赋常量字符串那么这个指针就是有分配内存的,所以你用scanf进行输入的时候其实是存储不了的,你要是真想用这种语法,可以这么写:
char *str;
str = malloc (sizeof (char) * 10);
gets(str);
回复 使用道具 举报
poxiao 发表于 2015-11-12 20:09
char *str如果你不在定义的时候给他赋常量字符串那么这个指针就是有分配内存的,所以你用scanf进行输入的时 ...

其实这就等同于赋值一个数组了
回复 使用道具 举报
又学到了一个新知识
回复 使用道具 举报
江流石不动 发表于 2015-11-12 23:18
又学到了一个新知识

共勉     
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 加入黑马