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;
}
上記のコードには、私を混乱させる場所があります
a
ifはポインタであり、*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 ではなく)、
swap(&a, &b)
しかし、実際にはポインター値をパラメーターとして渡し、コードは機能します。誰かが私にそれを説明できswap(char *a){...}
ますa
か*a
?