关于C++的数组问题
用%s格式输出时,输出对象不能为字符数组元素名。这句话如何理解?例如:charstr[]="crt+56kmodem";printf(%s\n,str[4]);为什么不对...
用%s格式输出时,输出对象不能为字符数组元素名。这句话如何理解?
例如:char str[]="crt+56kmodem";
printf(%s\n,str[4]);为什么不对?
为什么改为str+4就对了? 展开
例如:char str[]="crt+56kmodem";
printf(%s\n,str[4]);为什么不对?
为什么改为str+4就对了? 展开
展开全部
1.先说一下实际上这样的问题不用上来问的。你自己就能很好的解决,你把str[4]换成str就会把一个数组都输出出来。因为str本身就是一个指针,再结合指针那章的知识,实际上%s输出的就是从str指针开始的后面的所有的数。
2.明白指针和数组的关系,你可以自己写一个char *p;然后指向数组,然后再printf p+3就输出str第四个字符
3.把%s改成%c就能输出你想看到的结果,%c输出一个字符,%s输出你所输出的是以某指针开始直到结束的全部字符,比如就拿你的例子说,如果printf(”%s“\n,str);就是输出str指针后的所有字符,如果printf(”%s“\n,str+2);就是str[2]后的所有字符。
关键在明白指针和数组的关系。char str[100]就是在内存中分配了100个char型变量的空间,然后用指针str指向他,数组的名字实际上就是一个指针,指向数组的开头。
2.明白指针和数组的关系,你可以自己写一个char *p;然后指向数组,然后再printf p+3就输出str第四个字符
3.把%s改成%c就能输出你想看到的结果,%c输出一个字符,%s输出你所输出的是以某指针开始直到结束的全部字符,比如就拿你的例子说,如果printf(”%s“\n,str);就是输出str指针后的所有字符,如果printf(”%s“\n,str+2);就是str[2]后的所有字符。
关键在明白指针和数组的关系。char str[100]就是在内存中分配了100个char型变量的空间,然后用指针str指向他,数组的名字实际上就是一个指针,指向数组的开头。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询