Let's recap things:
1/ A file contains source code and is run through a compiler, it its turned into an object file.
2/ Several files are then linked together and create binaries (or executables)
So, if you get a source file containing c++, compile it with a c++ toolchain, then link it, you get an executable file.
If you take a source file containning obj-c code, compile it with an obj-c toolchain, link it, you get an executable file.
Both executables can be run, without any consideration about the original language.
What makes a big difference are the API (external libraries) used. Most C / C++ libraries can be called from a variety of language (perl/php/obj-C). On the other hand, most Obj-C libraries cannot be called from external languages without running through some serious hoops...
If you want to write portable obj-c code (ie. between Mac OS X and Linux) you should be careful not to use cocoa for example.
Hope that helps ...
ps: good luck with your linked list and your overflowing buffers, we all went though this at some point