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是字符串结束符, 












    种一棵树最好的时间是十年前,其次是现在。
  • 相关阅读:
    SVN服务器搭建(一)
    排序算法二:冒泡排序
    【LeetCode】136. Single Number
    【LeetCode】217. Contains Duplicate
    【LeetCode】189. Rotate Array
    【LeetCode】122. Best Time to Buy and Sell Stock II
    【LeetCode】26. Remove Duplicates from Sorted Array
    【LeetCode】20. Valid Parentheses
    【LeetCode】680. Valid Palindrome II
    【LeetCode】345. Reverse Vowels of a String
  • 原文地址:https://www.cnblogs.com/islch/p/12569323.html
Copyright © 2011-2022 走看看