关于两数交换的函数实现

问题:

(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;
}

上一篇:Android N Data Setup & Disconnect For Short Connection


下一篇:最全面的Java字节byte操作,处理Java基本数据的转换及进制转换操作工具,流媒体及java底层开发项目常用工具类