完全的C语言新手。我试图通过简单的代码片段来学习/理解指针。
为什么代码无法运行?当我将主函数中的解引用运算符*去掉后,代码就可以正常运行。
从概念上讲,这似乎应该是可以运行的。我将a和b初始化为指向int 1和int 2的指针。然后,我将它们的地址发送给swap()函数,应该会交换它们所指向的值。
#include <stdio.h>
void swap(int *px, int *py)
{
int tmp;
tmp = *px;
*px = *py;
*py = tmp;
}
main()
{
int *a, *b;
*a = 1;
*b = 2;
swap(&a,&b);
printf("%d %d\n", *a, *b);
}
为什么代码无法运行?当我将主函数中的解引用运算符*去掉后,代码就可以正常运行。
从概念上讲,这似乎应该是可以运行的。我将a和b初始化为指向int 1和int 2的指针。然后,我将它们的地址发送给swap()函数,应该会交换它们所指向的值。
&a
的类型是int **
。 - Kerrek SB