char* a=(char*)malloc(10);
char* b="ddd";
*a = *b;
printf("%x\n", a);//print the pointer's address(a) which is not pointer b's address
printf("%x\n", *a);//what does the print-result mean??? is it the address that b point to?
我知道a = b;表示b的地址。
答案 0 :(得分:0)
* a = * b,表示存储在分配给指针b的内存中的内容将成为指针a的内容。
答案 1 :(得分:0)
a=b
:它将b的值分配给
*a=*b
:它将位于b指向的地址中的内容分配给
如下所示,可以很好地利用您的要求:
#include<stdio.h>
void swapping(int *ptr_c, int *ptr_d) {
int tmp;
tmp = *ptr_c;
*ptr_c = *ptr_d;
*ptr_d = tmp;
printf("In function: %d %d\n", *ptr_c , *ptr_d);
}
int main(void) {
int a,b;
a=5;
b=10;
printf("input: %d %d\n", a, b);
swapping(&a,&b);
printf("output: %d %d\n", a, b);
return 0;
}
答案 2 :(得分:0)
*a = *b;
上述语句只会这样做:value(a
)&lt; - value(b
)(即指针a
将包含值'd')。
printf("%x\n", a);
这将以十六进制打印指针的地址(a
)。但是,始终使用"%p"
格式标识符来打印地址。 "%x"
用于以十六进制格式打印值。
printf("%x\n", *a);
由于值(a
)为'd',其ASCII值为100
(十进制百位)。
因此"%x"
将打印100
的十六进制值64
。因此,此声明将打印64
。
以上语句不会打印指针的地址(b
)。
但是,指针的地址(b
)可以通过以下语句打印:
printf("%p", b);