char s[] 与 char *s 的区别?
大家好,我有个问题无法解决,请大家指教。
问题:将一个字符串中的每一个字母变为其下一个字母,例如字符串“abcd”将变为“bcde”。
正解:
编译程序后,结果为“bcde”,运行正常。
错解:
如果我使用如下代码:
程序编译无错,但执行出错。经单步调试后,发现当使用 char *str=“abcd”定义后,str[i]++ 这句话有错误。
问题:
char str[]和char *str 有何区别?我一直认为它们都可以当做数组来处理,其中的每个字符都可以当做数组元素来处理,那么出现上述问题该如何解释?谢谢大家解决我的困惑。
问题:将一个字符串中的每一个字母变为其下一个字母,例如字符串“abcd”将变为“bcde”。
正解:
int main(int argc, char* argv[])
{
char str[]="abcd";
for(int i=0;str[i];i++)
{
if(str[i]=='z')
str[i]='a';
else
str[i]++;
}
printf("%s\n",str);
return 0;
}
编译程序后,结果为“bcde”,运行正常。
错解:
如果我使用如下代码:
int main(int argc, char* argv[])
{
char *str="abcdef";
for(int i=0;str[i];i++)
{
if(str[i]=='z')
str[i]='a';
else
str[i]++;
}
printf("%s\n",str);
return 0;
}
程序编译无错,但执行出错。经单步调试后,发现当使用 char *str=“abcd”定义后,str[i]++ 这句话有错误。
问题:
char str[]和char *str 有何区别?我一直认为它们都可以当做数组来处理,其中的每个字符都可以当做数组元素来处理,那么出现上述问题该如何解释?谢谢大家解决我的困惑。
...全文
相关推荐
java常见面试题(史上最全最经典-希望对你有用)
变量和数据类型* short s1 = 1; s1 = s1 + 1;有什么错?short s1 = 1; s1 += 1;有什么错?
Java 60 道面试题及答案.docx
* 类与对象的关系?类是对象的抽象,对象是类的具体,类是对象的模板,对象是类的实例。Java 数据类型* Java 中有几种数据类型?整形、浮点型、字符型、布尔型等。* 显示转换和隐式转换的区别?
java常见面试题史上最全最经典希望对你有用.pdf
* char 型变量中能否存贮一个中文汉字?为什么?char 型变量是用来存储 Unicode 编码的字符的,Unicode 编码字符集中包含了汉字,所以,char 型变量中当然可以存储汉字啦。
第4章(串).pptx
③b是哪个串的子串?在主串中的位置是多少?* 练习3:空串和空格串有无区别?答:有区别。空串(Null String)是指长度为0的串,而空格串是由一个或多个空格符组成的串。
2017北京邮电大学《计算科学导论与程序设计》期末考试_B .doc
void strCopy(char *s1, char *s2) { while (*s2 != '\0') { *s1 = *s2; s1++; s2++; } *s1 = '\0'; }4.


