Are $C^{\infty}$ completely defined by their derivatives? This question has been on my mind for some time. Here's my process.
Firstly, is it possible to construct a function such that it's defined with a different expression on different intervals, but that it's still in $C^{\infty}$?
For example, say we define a function like this:
$f(x)=\cos x$ for $x\ge0$
$f(x)=1 + \sin (x)$ for $x\le0$
The function is continuous. It's first derivative is
$f'(x)=-\sin x$ for $x\ge0$
$f'(x)=\cos x$ for $x\le0$
Not continuous.
If I chose two functions and match their values AND first derivatives, they differ in the third derivative. If I match that one also, the differ in the fourth... well, you get the point.
So I was thinking, could it be that a function in $C^{\infty}$ is fully defined by all it's derivatives in a single point? 
If I want to make a polynomial that aproximates the $\sin$ function, I can make it of an arbitrarily high degree and match as many derivatives as I want. Say I have a sequence of functions $g_n$, such that $g_n^{(i)}(x_0)=\sin^{(i)}(x_0)$ for every $i\in\{0,...,n\}$. 
Is $\lim_n g_n=\sin$?
If not for every $g_n$, is it true if we restrict $g_n$s to polynomials of $n$th degree?
 A: Consider
$$ f(x)=\begin{cases}0&\text{if }x\ge 0\\
e^{1/x}&\text{if }x<0\end{cases}$$
All derivatives at $x=0$ are zero (from the left they look like polynomial in $\frac1x$ times exponential, and the exponential always wins). So we cannot conclude anything about $f$ from knowing only all $f^{(n)}(0)$ (in fact not even knowing $f|_{[0,\infty)}$  helps).
You may be interested in analytic functions, which are much more rigidly determined by local data.
A: To directly answer your question "could it be that a function in $C^{\infty}$ is fully defined by all it's derivatives in a single point?", the answer is no. In fact, there does not exist any function $h(x) \in C^{\infty}$ that we can detect simply by knowing all the derivatives of the function at some point $a\in \mathbb{R}.$ This is because the smooth function $h(x) + f(x-a)$ (where f is as in Hagen's answer) has all the same derivatives at $a$ as $h(x).$
In fact, even the values of all the derivatives for all points in a huge interval $[-M, \infty)$ is not enough to decide between $h(x)$ or $h(x) + f(x+M)$ or $h(x) + \sin(x^3) f(x+M)$ ... 
If you know about convolutions, then from $f$ you can explicitly construct a smooth function $\tilde{f}$ so that $$\tilde{f}(x)=\begin{cases}0&\text{if }x\ge 0\\
e^{1/x}&\text{if } -\epsilon/2 < x<0 \\ g(x) &\text{if } -\epsilon< x \leq -\epsilon/2 \\ 0 & \text{if } x\leq \epsilon \end{cases}$$
where $g$ starts at $0$ and smoothly rises up until it connects with the $e^{1/x}$ component. Now we can conclude that its not even enough to know the values of all derivatives at all points on $\mathbb{R}$ excluding any tiny interval of length $\epsilon$ ! Even if you know all derivatives outside of $[a, a+\epsilon]$ you can't distinguish between $h(x)$ or $h(x) + (x^2\tan(e^x))\tilde{f}(x-a-\epsilon).$
Intuitively, the reason knowledge of derivatives at points fails to determine a unique function is because derivatives give local information (they only depend on, and hence give you information about) the behavior of the function in small neighborhoods of the points. To pin down a function, you need global information, knowledge about the function everywhere. 
P.S. You'll be in for a treat when you study complex analysis!
