问题:
(1)为什么这个程序编译时不会给出“使用了未初始化的指针”的警告信息呢?
(2)如果将temp改为short型变量,而不是short型指针变量,是否可以呢?请解释原因。
void Swap(short *x, short *y)
{
short *temp;
temp = x;
x = y;
y = temp;
}
[解答1]
在函数Swap中, temp指针在定义后经历了赋值操作, 在语句"temp = x"后, 指针变量temp中存储了实参变量a的地址, 即该指针已完成了初始化操作, 所以在编译时不会给出"使用了未初始化的指针"的警告信息.
#include<stdio.h>
void Swap(short *a, short *b);
void Swap(short *x, short *y)
{
short *temp;
temp = x;
x = y;
y = temp;
}
int main()
{
short a, b;
a = 5, b = 9;
printf("a = %hd, b = %hd.\n", a, b);
Swap(&a, &b);
printf("a = %hd, b = %hd.\n", a, b);
/* */
return 0;
}