黑马程序员技术交流社区
标题:
c疑惑?
[打印本页]
作者:
JAH562
时间:
2014-11-2 22:33
标题:
c疑惑?
#include <stdio.h>
void main()
{
char str[100];
char *demp=str;
gets(str);
while(*str!='\0'){
if(*str>='a' && *str<='z'){
*str-='a'-'A';
}
str++;
}
运行时,str++ 报错怎么 回事啊 我想把输出的字符都变成大写
作者:
x65396731
时间:
2014-11-3 08:51
可能错在char *demp=str;
作者:
Lizzie
时间:
2014-11-3 10:08
char *demp=str;在这里你是定义了一个指针来指向str这个数组的,所以在循环判断的时候是demp++,指针依次指向下一个字符来进行判断的
#include <stdio.h>
void main()
{
char str[100];
char *demp=str;
gets(str);
while(*demp!='\0')
{
if(*demp>='a' && *demp<='z')
{
*demp-=('a'-'A');
}
printf("%c",*demp);
demp++;
}
printf("\n");
}
复制代码
作者:
雪寒
时间:
2014-11-3 10:23
本帖最后由 雪寒 于 2014-11-3 10:33 编辑
首先你得明白指针和一维数组的区别
指针定义: 指针是包含内存地址的变量,一般的指针变量直接包含特定的值,指针变量包含的是某一特定数据类型的内存地址。
一维数组的定义: 数组是一组连续的内存位置,它们都具有相同的名称和类型。数组名表示数组的首地址。
定义上的区别: 指针是个变量,可以进行加或减运算,可以改变其指向的内存地址值,而数组是个常量,其内存地址的值不可改变。
可见,指针变量里面存放的是地址,数组名表示数组的首地址。也就是说str不可改变,不能str++;要想用指针遍历数组,得把数组首地址赋给指针变量,让指针变量进行加减运算。也就是你写的char *demp=str;然后通过指针变量去遍历数组就OK了,完整程序如下:
#include <stdio.h>
void main()
{
char str[100];
char *demp=str;
gets(str);
while(*demp!='\0'){
if(*demp>='a' && *demp<='z'){
*demp-='a'-'A';
}
demp++;
}
}
复制代码
作者:
doudou33420
时间:
2014-11-3 11:42
学习 学习
作者:
JAH562
时间:
2014-11-3 23:06
刚发现 是这个问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2