Why can I increment a char array position inside a function and not in main

心已入冬 提交于 2019-11-29 17:40:53

That's because s is an array in main, but when you pass it as a parameter in stringLength it decays into a pointer.

It means that string is not an array, it is a pointer, which contains the address of s. The compiler changes it without telling you, so it is equivalent to write the function as:

int stringLength(char *string);

There's a page that talks about C arrays and pointers in the C-Faq

From there, I recommend you to read questions:

  • 6.6 Why you can modify string in stringLength
  • 6.7 Why you can't modify s in main
  • 6.2 I heard char a[] was identical to char *a
  • 6.3 what is meant by the ``equivalence of pointers and arrays'' in C?
  • 6.4 why are array and pointer declarations interchangeable as function formal parameters?
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!