求助下大佬!
# 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))}
程序运行的结果是什么?
怎么来的? fun()函数传入一个参数n,返回值的大小就是n的大小。
a=fun(10) 执行完这句后 a=10
然后printf语句中输出的是 a+fun(10) 也就是10+10 结果就是20咯
注意,下次发问题的时候请把代码敲对! 本帖最后由 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;
} 若看得明白,能解答你的疑问,请赏个分,谢谢 sunrise085 发表于 2020-4-10 00:15
fun()函数传入一个参数n,返回值的大小就是n的大小。
a=fun(10) 执行完这句后 a=10
然后printf语句中输 ...
我用的扫描王,扫描出来的,下次一定!还有,我想问下,给指针p开辟一个空间在这里有用吗? Zichenya 发表于 2020-4-13 06:58
我用的扫描王,扫描出来的,下次一定!还有,我想问下,给指针p开辟一个空间在这里有用吗?
没太大关系。在函数中用指针也好,用变量也罢。结果是一样的。反正你返回的是值,而非指针。
页:
[1]