Zero游戏开发 2017-03-20 18:35 采纳率: 100%
浏览 853
已采纳

指针b为什么会变???

图片

  • 写回答

3条回答 默认 最新

  • ashleyliuyc 2017-03-21 01:57
    关注
    #include <stdio.h>
    #include <malloc.h>
    #include <iostream>
    
    void func( char * w, int m )
    {
        printf( "%s \n", w );
        printf( "w -> %p \n", w );
        char * a = w;
        char * b = w;
    
        printf( "a -> %p \nb -> %p\n", a, b );
        for( int i = 0; i < m; ++i )
            *w++;
    
        printf( "%s \n", w );
        printf( "w -> %p \n", w );
        printf( "a -> %p \nb -> %p\n", a, b );
    
        while( *w )
        {
            *a++ = *w++;
        }
        printf( "%s \n", a );
        printf( "%s \n", b );
        printf( "w -> %p \n", w );
        printf( "a -> %p \nb -> %p\n", a, b );
    }
    
    int main( int argc, char ** argv )
    {
        char w[] = "ABCDEFG";
        func( w, 2 );
    
    
        system("pause");
        return 0;
    }
    
    

    图片说明
    a 和 b本来指向同一块地址,b指向的内存位置一直没变,但是上面的while里a将这块内存的内容改了!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?