void swap(char *a,char *b){
char t;
t = *a;
*a = *b;
*b = t;
}
int main(void){
char a = '1';
char b = '2';
swap(&a,&b);
printf("The value is %c and %c respectively\n",a,b);
return 0;
}
在上面的代码中,有一个地方让我感到困惑
我认为 ifa
是一个指针,并且*a
是它指向的值
int *ptr, a = 1;
ptr = &a;
printf("The value of *ptr should be a: %d\n",*ptr);
printf("The value of *a should be an hex address: %p\n",ptr);
所以在swap(char *a, char *b)
函数中,它的值不是指针(*a不是a),
swap(&a, &b)
但它实际上将指针值作为参数传递给它,并且代码有效。任何人都可以向我解释吗?(我认为swap(char *a){...}
部分声明并不意味着它需要 *a 才能传入,它意味着声明一个指针 value a
,而不是 a 指向*a
其他地方的值意味着)。