如下程序:
char *a="张三”;
printf("%s\n",a);
1、为什么“张三"可以直接赋值给指针变量a?
2、程序第二行为什么输出列表中是a,而打印出来的却是 张三 而不是张三存储的地址?
3、如果把程序第二行的输出列表中改为 *a 运行时就会出错?
求大神帮忙解答一下疑惑😘😘(。・ω・。)ノ♡
1ãä½ å¯ä»¥å°"å¼ ä¸"è§ä¸ºchar []ç±»åçæ°æ®ï¼char []ç±»åèªç¶å¯ä»¥èµå¼ç»char *ç±»åï¼å 为é½æ¯è¡¨ç¤ºé¦å符çå°åã
2ãå ä¸ºä½ å·²ç»åæäºââåéaçç±»åæ¯%sï¼é£ä¹ï¼ç¨åºå°±ä¼å°aè§ä¸ºå符串é¦å符çå°åï¼æå°åºæ´ä¸ªå符串ãå¦æä½ æ¹æprintf("%d\n",a);é£ä¹æå°åºæ¥çå°±æ¯å¼ ä¸çåå¨å°åã
3ã%sä¼å°å¯¹åºçåéè§ä¸ºä¸ä¸ªå符串é¦å符çå°åï¼æå°åºæ´ä¸ªå符串ãå¦æä½ æ¹æ*aï¼é£ä¹å®é %sæ¶å°çæ¯å¼ ä¸çæ°æ®ï¼èä¸æ¯å¼ ä¸çå°åï¼å½%så§å¼ ä¸çæ°æ®å½åå°åå»æä½æ¶ï¼å½ç¶ä¼åºç°é误ã
追é®ç¬¬3个é®é¢ç追é®ï¼
å¨ç¨åºç¬¬ä¸è¡ï¼ä»¤æéåéæåäº"å¼ ä¸"ï¼å³*aä¸åæ¾äº"å¼ ä¸"çå°åï¼
è¦æ³éè¿æéåéé´æ¥çè¾åºå®ææåçåéï¼ååºè¯¥å¨printfå½æ°çè¾åºå表ä¸æ"*a"åï¼å¦æç´æ¥æ"a"çè¯ä¼è¾åºè¿ä¸ªæéåéææåçåéçå°åã对å§ï¼
é£ä¹å¨ä¸è¿°ç¨åºä¸ç¬¬äºè¡ï¼æè¦è¾åºaè¿ä¸ªæéåéææåçåéï¼ä¸åºè¯¥æ¯å¨è¾åºå表ä¸ä¸º"*a"åï¼