如下程序: char *a="张三”; printf("%s尀n",a); 1、为什么“张三"可以直接赋值

2025-04-03 16:01:35
推荐回答(1个)
回答1:

1、你可以将"张三"视为char []类型的数据,char []类型自然可以赋值给char *类型,因为都是表示首字符的地址。

2、因为你已经写明了——变量a的类型是%s,那么,程序就会将a视为字符串首字符的地址,打印出整个字符串。如果你改成printf("%d\n",a);那么打印出来的就是张三的存储地址。

3、%s会将对应的变量视为一个字符串首字符的地址,打印出整个字符串。如果你改成*a,那么实际%s收到的是张三的数据,而不是张三的地址,当%s吧张三的数据当做地址去操作时,当然会出现错误。