我真的对指针的工作原理感到困惑。我正在尝试编写简短的小程序来准确说明它们是如何工作的,但我遇到了一些麻烦。例如:
char c[3]; //Creates an array of 3 bytes - the first 2 bytes can be used for characters and the 3rd would need to be used for the terminating zero
*c = 'a'; //sets c[0] to 'a'
*c++; //moves the pointer to c[1]
*c = 'b'; //sets c[1] to 'b'
*c++; //moves the pointer to c[2]
*c = '\0' //sets c[2] to the terminating zero
显然这个代码不正确,否则我不会在论坛上投票:)
我只是在从书中理解这一点时遇到一些麻烦,有人可以简要解释一下这个概念吗?
c
不是指针,而是数组。尽管在大多数数组上下文中数组的名称会退化为指针,但您不能将数组名称视为可修改的指针。衰变的结果只是暂时的(技术上来说是rvalue).
因此您无法申请++
到数组的名称。如果要增加指针,请使用指针:
char *d = c;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)