C语言提问.要求能详细分析一个题目.高手的来.谢谢

2025-06-21 08:22:57
推荐回答(4个)
回答1:

hi 昨天玩游戏没顾上你 我帮你看看吧
说实话 这四个代码都是错的 因为首先SWAP未声明 而且里面的形参类型也是不清楚的 如果用VC++编译的话肯定是不通过 现在不妨假设都能正确调用这个函数吧
A:如果 p,q分别是&a.&b的值话 A是可以的 顺便说下 如果形参是 int *p,
int *q
的话 那在函数里面有定义了一遍 是违法的 int *t是声明了一个指向int
类型的指针 但其指向是不确定的 t=(int *)malloc(sizeof(int)); 这句话
的作用就是 分配一块int大小的空间 并将其地址赋值给t 于是t就只想了这
块地址了
D:是也是可以的 除了T的类型 其他的都和A的是一样的 但也改变了原来空间的
的值得 因而也是对
这样吧 你上线的话 我给你看看代码吧 加深一下理解

回答2:

t=(int *)malloc(sizeof(int));
动态分配空间!

回答3:

A和D的交换方式类似
都相当于是使用了
int t;
t = *p;
*p = *q;
*q = t;
的方式实现的交换
t=(int *)malloc(sizeof(int));是用来分配一块动态存储空间,
跟int a;的区别是,
函数返回时局部声明的变量空间会被释放,而malloc这种不会被释放
所以A还是有一点问题的就是会内存泄漏。。。

回答4:

A不可以,A中和你说的差不多,D可以,传地址交换,C语言指针那里有这个,但是这几个程序写得不好,严格地说不改动一下再运行都不太好