s1e22:课后习题动动手第0题疑问。
老师说,你可能觉得我用一个指针指向数组是有点多此一举,但如果不这么做,程序将报错(不信你试试看~)#include <stdio.h>
#define NUM 128
int main(int argc, const char * argv[]) {
char str= " ";
int i=0;
printf("请输入一个字符串:");
fgets(str, NUM, stdin);
while(str!='\n')
{
i++;
}
printf("您总共输入了%d个字符\n",i);
return 0;
}
没用指针也能正常运行
请问老师指的是什么情况下会报错呢?
我感觉应该是这个意思吧
#include <stdio.h>
#define MAX 1024
int main()
{
char str;
int length = 0;
printf("请输入一个字符串:");
fgets(str, MAX, stdin);
while (*str++ != '\0')
{
length++;
}
printf("您总共输入了 %d 个字符!\n", length - 1);
return 0;
}
不能进行自增自减操作 你用下标 没改变数组名的值 是个语法糖
str ==*(str+ i) str本身并没有变
而数组名是个指针常量不能改变 ,不能做左值
如 改成str++ 之类就会报错
while(*str++ !='\n')
{
i++;
}
就会报错 万千只cnm 发表于 2021-6-9 15:27
你用下标 没改变数组名的值 是个语法糖
str本身并没有变
而数组名是个指针常量不能改变...
感谢,听了后一节课,理解了数组名不能作左值的缺陷! wp231957 发表于 2021-6-9 07:28
不能进行自增自减操作
感谢!!!理解了! 人造人 发表于 2021-6-9 00:24
我感觉应该是这个意思吧
嗯嗯,就是str不能作为左值,自增减。感谢回复!
页:
[1]