zoukankan      html  css  js  c++  java
  • C语言字符指针赋值的问题

    #include <stdio.h> 
    void Initialize (char * a, char * b) { 
        a[0] = 'T'; a[1] = 'h'; a[2] = 'i'; 
        a[3] = 's'; a[4] = ' '; a[5] = 'i'; a[6] = 's'; 
        a[7] = ' '; a[8] = 'A'; a[9] = ''; 
        b = a; 
        b[8] = 'B'; 
    } 
    
    #define ARRAY_SIZE 10 
    char a[ARRAY_SIZE]; 
    char b[ARRAY_SIZE]; 
    
    int main(int argc, char * argv[]) { 
        Initialize(a, b); 
        printf("%s
    %s
    ", a, b); 
        return 0; 
    } 



    题意是打印两个 This is B,即:
    This is B
    This is B

    但程序的运行结果是:
    This is B

    (空)

    char a[ARRAY_SIZE]; 
    char b[ARRAY_SIZE]; 
    这是两个已开辟空间的了数组
    
    void Initialize (char * a, char * b) 这是两个形参,纯指针!
    
     Initialize(a, b); 这句过后,形参指针ab就分别指向了数组ab!
    a[0] =.....这是通过指针a间接往数组a赋值!
    
    b = a;//b指针本来指向数组b ,但这句边变成把b指针指向a指针所指向的空间,也就是b指针也指向了数组a,而不是内容copy!
    
    This is B
    (空)
    第二句是空那是因为b数组从未被赋值,它都是0,0是字符串结束符, 
    char b[ARRAY_SIZE]; 
    这是两个已开辟空间的了数组
    
    void Initialize (char * a, char * b) 这是两个形参,纯指针!
    
     Initialize(a, b); 这句过后,形参指针ab就分别指向了数组ab!
    a[0] =.....这是通过指针a间接往数组a赋值!
    
    b = a;//b指针本来指向数组b ,但这句边变成把b指针指向a指针所指向的空间,也就是b指针也指向了数组a,而不是内容copy!
    
    This is B
    (空)
    第二句是空那是因为b数组从未被赋值,它都是0,0是字符串结束符, 












    种一棵树最好的时间是十年前,其次是现在。
  • 相关阅读:
    【模板】高斯消元
    【洛谷P1730】最小密度路径
    【模板】矩阵乘法优化线性递推
    【洛谷P3723】礼物
    【洛谷P3338】力
    【模板】NTT
    【洛谷P1919】A*B Problem升级版
    测试理论基础(思维导图)
    Fiddler
    常用 Linux 命令
  • 原文地址:https://www.cnblogs.com/islch/p/12569323.html
Copyright © 2011-2022 走看看