-6
我無法理解下面的代碼。用字符串替換printf中的格式
#include<stdio.h>
int main()
{
char *a ="%d";
int c = 5;
printf(a,c);
}
在我看來,那printf函數應該是這樣的:printf(%d,c).
我知道這是一種奇怪的,但實際上它可以正常運行。誰爲printf函數添加了雙引號?或者是char * a與雙引號存儲在一起?
'誰爲printf函數添加了雙引號?'這是一個什麼樣的問題?這是標準中規定的,不是嗎? –
當你在寫一個printf的內部時,它會用「%d」替換它,這就是它正常工作的原因。 –
雙引號是定義文字[tag:c]字符串的方式....'a'將指向一個3字節的內存:[[0] =%[1] = d [2] ='\ 0'作爲第一個參數,[printf](http://www.tutorialspoint.com/c_standard_library/c_function_printf.htm)希望存儲一個以NULL結尾的字符串的有效地址。 – LPs