kok*_*ici 3 c pointers pass-by-reference
#include <stdio.h>
int* func()
{
static int a = 5; /* line 5 */
printf("%d\n",++a);
return &a; /* line 7 */
}
int main(void)
{
int *b = func(); /* line 12 */
(*b)++;
func();
}
Run Code Online (Sandbox Code Playgroud)
这是编码作业的测试代码示例,因此不一定是最佳的.我有基本的c ++和Java知识,但是这些是C中的指针,我遇到了麻烦.
func()的返回类型是指针,但它返回整数的地址(第7行).整数是静态的(第5行)是否必须对此做任何事情?
第12行实际上做了什么?
此代码的输出是:
6
8
整数是静态的(第5行)是否必须对此做任何事情?
是.否则返回指向自动局部变量的指针将调用未定义的行为.
static程序终止时,局部变量的生命周期结束.因此,它的内存位置被分配到程序结束,因此可以返回它的位置.
该行(*b)++;取消引用指向的值b,然后将该值递增1.