Zichenya 发表于 2020-4-9 23:07:12

求助下大佬!

# include< stdio. h>
include<stdlib. h>
int fun(int n)
{
int * P;
P= (int * )malloc(sizeof(int));
*p=n; return * P;
}
main()
{
int a;
a=fun(10);printf("%d",a+fun(10))}
程序运行的结果是什么?
怎么来的?

sunrise085 发表于 2020-4-10 00:15:10

fun()函数传入一个参数n,返回值的大小就是n的大小。
a=fun(10)   执行完这句后 a=10
然后printf语句中输出的是   a+fun(10)   也就是10+10 结果就是20咯

注意,下次发问题的时候请把代码敲对!

howzyao 发表于 2020-4-10 00:36:29

本帖最后由 howzyao 于 2020-4-10 00:38 编辑

#include <cstdlib>
#include <iostream>
#include <stdio.h>
using namespace std;
int fun(int n)
{
int * p;
cout<<"fun中的p没有赋给左值地址:\n";
cout<<"1---p的地址:"<<p<<endl;
p= (int * )malloc(sizeof(int));
cout<<"2---p的地址:"<<p<<" 值"<<*p <<" (右值---来自强制转换)"<<endl;
*p=n;
cout<<"3---p的地址:"<<p<<" 值"<<*p<<" (右值---来自参数)"<<endl;

cout<<"4---fun中的p,在每调用fun函数时,向调用函数传回了不同地址的p"<<endl;

cout<<"-----------------------------------"<<endl;
return * p;
}

   
                     
int main(int argc, char *argv[])
{
   
int a;

printf("%s %d %s","a没有赋值,现在是随机值:", a ,"\n");

a=fun(10);
cout<<"a=fun(10)语句,由于fun返回的地址中的值,使a得到了参数10的值"<<endl;

printf("%d,%s,%d", a+fun(10),"a没有被初始化,但被上一语句: a=fun(10) 所赋值,值=",a,",\n" );
   
   
    system("PAUSE");
    return EXIT_SUCCESS;
}

howzyao 发表于 2020-4-10 00:40:24

若看得明白,能解答你的疑问,请赏个分,谢谢

Zichenya 发表于 2020-4-13 06:58:17

sunrise085 发表于 2020-4-10 00:15
fun()函数传入一个参数n,返回值的大小就是n的大小。
a=fun(10)   执行完这句后 a=10
然后printf语句中输 ...

我用的扫描王,扫描出来的,下次一定!还有,我想问下,给指针p开辟一个空间在这里有用吗?

sunrise085 发表于 2020-4-13 08:42:02

Zichenya 发表于 2020-4-13 06:58
我用的扫描王,扫描出来的,下次一定!还有,我想问下,给指针p开辟一个空间在这里有用吗?

没太大关系。在函数中用指针也好,用变量也罢。结果是一样的。反正你返回的是值,而非指针。
页: [1]
查看完整版本: 求助下大佬!