打印指针指向的地址值

废话不多说,直接上错误代码:

static void print_cpu_src(uint8_t * src,int stride){

    int i,j;

    printf("Magnum  cpu src addr == %p, stride ==%d:\n",&src,stride);

     for (i = 0; i < 11; ++i) {

             printf("\n");

            for (j =0; j < 4; ++j) {

                          printf("%d ,", src[j]);

            }

            src +=  stride;

            printf("new src addr %p\n",&src);

          }

     printf("\n");

}
View Code

输出结果:

Magnum cpu src addr == 000000000022F4C0, stride ==800:

129 ,124 ,122 ,124 ,new src addr 000000000022F4C0

130 ,125 ,122 ,125 ,new src addr 000000000022F4C0

132 ,125 ,123 ,125 ,new src addr 000000000022F4C0

132 ,126 ,123 ,125 ,new src addr 000000000022F4C0

151 ,127 ,124 ,126 ,new src addr 000000000022F4C0

151 ,127 ,125 ,126 ,new src addr 000000000022F4C0

153 ,128 ,125 ,127 ,new src addr 000000000022F4C0

154 ,128 ,125 ,127 ,new src addr 000000000022F4C0

157 ,129 ,125 ,127 ,new src addr 000000000022F4C0

158 ,129 ,125 ,127 ,new src addr 000000000022F4C0

161 ,130 ,125 ,128 ,new src addr 000000000022F4C0

每次输出的地址值都是一样的,自然想到其实输出的是指针变量的地址值,指针变量是没有变化的变化的是指向的内存地址。

修改,新的代码如下:

static void print_cpu_src(uint8_t * src,int stride){

    int i,j;

    printf("Magnum  cpu src addr == %p, stride ==%d:\n",(int)src,stride);

     for (i = 0; i < 11; ++i) {

             printf("\n");

            for (j =0; j < 4; ++j) {

                          printf("%d ,", src[j]);

            }

            src +=  stride;

            printf("new src addr %p\n",(int)src);

          }

     printf("\n");

}
View Code

总结:

其实指针 *src,  src 就是指向的地址值,直接打印它即可

你可能感兴趣的:(指针)