我明白這是基本的東西的一部分,但我堅持:-( 有人可以幫我C:指針混亂
計劃1:
#include <stdio.h>
#include <stdlib.h>
int main()
{
int a=1,b=2,c;
c=(a+b)++;
}
爲什麼輸出錯誤的左值要求
方案2:??
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char *p1="name";
char *p2;
p2=(char*)malloc(20);
memset(p2,0,20);
while(*p2++=*p1++);
printf("%s\n",p2);
}
爲什麼輸出,一個EM pty字符串?如果我逆轉增量的順序,那就是:while(++*p2=++*p1);
,爲什麼左值錯誤會出現?
「吻」,避免一個襯墊等而(* P2 ++ = * P1 ++);最好把這條線分成更清晰的「直到」,「增加」和複製部分。而不是一次完成。 – Johan 2011-05-30 07:29:20
@Johan:如果事情做得很直接,它不會是一個棘手的面試問題的一部分:-) – kingsmasher1 2011-05-30 07:30:49
你是正確的問題(並學習新的東西),但更簡單的代碼傾向於在長期運行;) – Johan 2011-05-30 07:44:40