If we have a function $f:\mathbb R\to\mathbb R$ so that, for all reals, $$f(x)+f(y)=f(x+y)\text{ and }f(x)f(y)=f(xy),$$ we can conclude that it is either identically $0$ by the following argument:
We have $f(x)^2=f(x^2)$, so nonnegative $x$ are mapped to nonnegative $f(x)$. However, this means $f$ is monotonically nondecreasing, so, as $f(q)=cq$ for all rational $q$ and some fixed $c$, $f(x)=cx$ for all $x\in\mathbb R$, and then we can easily find $c\in\{0,1\}$.
However, this argument fails for $f:\mathbb C\to\mathbb C$. My question is thus as follows:
Does there exist a function $f:\mathbb C\to\mathbb C$ besides $f(x)\equiv 0$ and $f(x)\equiv x$ for which $$f(x)+f(y)=f(x+y)\text{ and }f(x)f(y)=f(xy)$$ for all $x,y\in\mathbb C$?
I've been able to show a bit about algebraic numbers:
If $P(x)\in\mathbb Q[x]$, we know by additivity, multiplicativity, and the fact that $qf(x)=f(qx)$ for any $q\in\mathbb Q$ (by additivity), that $f(P(x))=P(f(x))$. (The same should hold for multivariate polynomials as well.) So, if $P(x)=0$, then $P(f(x))=0$. If we have a polynomial $P$ of degree $n$ and its roots $x_1,\dots,x_n$, we have that $$\sum_{i=1}^n x_i^k=f\left(\sum_{i=1}^n x_i^k\right)=\sum_{i=1}^n f(x_i)^k,$$ where the first equality is because the sum is rational. Now, because $S=\{x_i\}$ and $T=\{f(x_i)\}$ are two (multi)sets for which $$\sum_{s\in S}s^k=\sum_{t\in T}t^k$$ for all $k$, they must be in fact equal, and thus $f$ permutes the roots of any rational polynomial. However, I can't figure out how to generalize this at all to non-algebraic numbers, or whether anything should break.