指针和数组替换和区别
指针和数组在很多方面都可以替换
为什么不直接用while(*str++ != '\0')涉及到了Lvalue和Rvalue的问题 // http://www.dotcpp.com/wp/692.html
例如有字符数组char a[100];当a做右值时候,我们可以把它赋给char *类型的指针,用来指向这个数组,这种情况下数组名做右值代表该数组首元素的首地址,是常量,是完全可以的。而数组名无论右值和还是左值,都代表是地址,是常量,因此它不可以做左值,因为常量不可被修改!所以不少同学试图再定义数组之后再试图对数组赋字符串都是错误的!
// http://www.dotcpp.com/wp/692.html 《C语言中左值和右值得区别》
*target++,的意思是先取target地址的值,判断是否是'\0',再取(target+1)的值来判断
直到判断到了是'\0',就停止执行
PS:只要不是定义指针变量的*,就是取值的意思
总结:数组名是一个地址,指针是一个左值
posted on 2018-09-22 14:35 田安Anne 阅读(...) 评论(...) 编辑 收藏