投入就放过 发表于 2022-2-26 16:58:45

c语言函数

#include <stdio.h>

int *func(int n);

int *func(int n)
{
      n++;

      return &n;         //不是不能返回参数的地址吗,但是我自己上机好像是可以的?
}

int main(void)
{
      printf("%d\n", *func(520));

      return 0;
}

ckblt 发表于 2022-2-26 17:03:38

int main(void)
{
    int a = 520;

    printf("1: %d\n", a);
    printf("2: %d\n", *func(520));
    printf("完成");

    return 0;
}

输出:
a.c: In function 'func':
a.c:10:12: warning: function returns address of local variable [-Wreturn-local-addr]
   10 |   return &n;
      |            ^~
1: 520

ba21 发表于 2022-2-26 18:23:33

指针函数 返回的是一个地址,没有规定什么地址不能返回。
只是你返回局部变量的地址,对你来说没有用处,函数一结束,相应的变量也就释放了。
有些编译器会警告提醒。
页: [1]
查看完整版本: c语言函数