* a = * b在C中的含义是什么?

时间:2014-10-18 12:22:02

标签: c

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的地址。

3 个答案:

答案 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);