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] = '\0'; 
    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\n%s\n", 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是字符串结束符, 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值