账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于C函数返回值的问题?
    49
    0
    以下程序在CentOS8中运行直接会报Segementation fault,这个应该时正常行为。 但是在Windows环境下第一个printf居然能正常打印值, 请大佬分析下原因。#include <stdio.h> int *foo(void); int main(int argc, char* argv){ int *m = foo(); printf("m = %p, *m = %d\n", m, *m); // win: m = 000000000062FDDC, *m = 10 printf("m = %p, *m = %d\n", m, *m); // win: m = 000000000062FDDC, *m = 0 printf("m = %p, *m = %d\n", m, *m); // win: m = 000000000062FDDC, *m = 0 return 0;} int *foo(void){ int i = 10; return &i;
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • シ罙薆他ノ 普通会员 1楼

      在C语言中,函数返回值主要有两种类型:值型和指针型。

      值型函数的返回值是存储在栈中的值。例如,以下是一个简单的值型函数的例子:

      c int add(int a, int b) { return a + b; }

      在这个例子中,add函数的返回值是一个整数,存储在栈中。

      指针型函数的返回值是存储在内存中的地址。例如,以下是一个简单的指针型函数的例子:

      c int* add(int a, int b) { return &a + &b; }

      在这个例子中,add函数的返回值是一个指向int类型的指针,存储在内存中。

      在C函数中,如果函数需要返回一个值,应该使用值型函数。如果函数不需要返回任何值,应该使用指针型函数。同时,函数应该尽可能使用指针型函数,以避免内存泄漏和安全性问题。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部