对变量和指针使用相同的名称两次(c编程)

时间:2014-05-15 22:58:20

标签: c variables pointers naming-conventions function-pointers

#include <stdio.h>

void swap(int *i, int *j)
{
    int t;
    t = *i;
    *i = *j;
    *j = t;
}

void main()
{
    int i,j;
    i=5;
    j=10;
    printf("%d %d\n",i,j);
    swap(&i,&j);
    printf("%d %d\n",i,j);

}

这个小程序交换两个变量会不会有问题,因为函数内部的i,j作为指针工作,而main内部包含数字?我应该使用其他字母,例如a,b而不是i,j在main里面?

2 个答案:

答案 0 :(得分:4)

变量是它们定义范围的本地变量,因此根本不应该是一个问题。

答案 1 :(得分:4)

变量仅在您创建它们的函数内“实时”生效。换句话说,i中的maini中的swap完全不同。

您的代码仅偶然引用相同的变量。

如果变量已在全局范围内声明(在任何函数之外),那么您可能会遇到问题。

所以不,在这种情况下完全没问题。狂野(但不是狂野;如果事情变得太疯狂,或者对于阅读代码的任何人,请考虑更改名称......)