I have been reading two c tutorial books and getting help from a reference book. So far in each I am able to work my way to about halfway through each until I get to sections on arrays and pointers, once I get to that point I find myself not able to understand anything. Through trying to figure out why I have found that I don't have a deep enough comprehension of the c language. I have came up with a list of questions that I would like anyone who can to answer them, if they would be so kind (= I've looked up these questions on my own I have found some results but I'm unsure of what I have learned to be an accurate interpretation of the facts so I shall list my questions, say what I think the answer is (if I have any idea of it) and I'll list any relevant information that I have found on my own. OK... So here are the questions:

What is an algorithm / what do people by algorithm?:
OK this may be a very basic question... but I have to start somewhere. The definition that I have is as follows "The formula or procedure by which a set of program instructions performs a defined task" That seems very easy to understand something that does a defined task, OK. Well my question really is what do people mean by an algorithm, for example I may be told that I need to rethink my algorithm out, well in my head that would mean my program so, does algorithm == program? since a program does a defined thing right...?

An argument?:
"The value passed to a function or subroutine. Its type must match that of the corresponding parameter in the declaration."
Well this one has me stumped. According to that this is a argument:
Code:
print("%d", variable");
where the variable is the argument, so by that am I right in assuming that anything that modifies a function is a argument also is there thing else besides the above that is considered an argument and can an argument have any other forms?

Don't use auto?
This one in a weird way makes me unhappy, there is a keyword that there is no point in using (according to my 3 books and several tutorials). From what I have learned the auto keyword is used as a to declare a variables type, when used it would create a "local variable that loses its value as it goes out of scope" or in my words a plain old local variable.
OK so i have a few questions about this one, is there a way that I can make use of this keyword, if the answer is no... Why would someone create something unusable (I'm assuming it may have been used in earlier versions of C?)

And my last question is on this is about Automatic variables / local variables, when these variables lose they're value apron leaving the function that they are declared, are they really lost or just lost to the rest of the program, for example, if i was to use goto or some do something to make a loop that would reenter the function would the variables value contain what it did when I was there last or be given the initialized value. Maybe I should give a code example...Or at least pseudo code
Code:
main(){
somefunction() {
int variable = 0;
repate:
variable++
}
goto repeate;
}
32 bit vs 64 bit:
I've heard some talk about this in regarding to programming, it seems that depending on your computers "architecture" the values when declaring variables may differ depending on what type of computer you are using. My questions regarding this issue are: How do I tell what type of "architecture" (I don't really know what that means...) does my computer use (=, i wonder if i should already know that, lol.
Are they're any other differences that would make porting programs difficult (differences in regarding this question, not about the lack of some libraries and other issues, I'll ask about that in a bit (=.

<expression1> ? <expression2> : <expression3> ?
well my question on this is why doesn't anyone use this (from what I've looked at it I've never seen any one use it) it looks like a good way to control the programs flow.
BTW just because I like it doesn't mean I can use it...
Please tell me why the following program doesn't work )=
Code:
#include <stdio.h>
int main(void)
{
int variable;
scanf("d%", &variable);
variable ? printf("false\n") : printf("true\n");
return 0;
}
Arrays and pointers?
OK i've decided these things are the reincarnation of the devil! These things are why I decided to make this list of questions...
OK what I don't understand about them is:
Pointers, why would you need / care about where something is located. I make a variable the computer makes room for the variable, I give it a value and the computer remembers it... So why after all that do we care where exactly at where it is located.
And how do you use pointers )= I think I can make a 1 dimensional array fine. but pointers they are a mystery )= Of course so are 2 dimensional arrays.
One more question on this it seems that with each dimension an array is given the more memory they require, at what point (how many dimensions) would be to much?

File scope?
So theres global variables (entire program can use) local (Used within the function) external (from outside the program) and static (only within the program, can't be used outside it). I hope I got those right, my question in regards to these (I get local and global) is why would you need to declare static wouldn't it be better to just make sure your variables from other files (you intend to use / merge with this one) have separate variable names, would that solve the problems you may have?

return?
I understand why main() should have a return, but what about all other functions.

Headers?
Why can't I find them )= I would like to take a look at them but don't know where to do so...
When headers are added to files, are they completely added if you wanted to use printf() by adding <stdio.h> would you add the entire thing or only what deals with print()?
If I would like to make my own printf() is it possible by using only the 32 c keywords? *very important. I must know (= *

Hexadecimal base/octal?
My only question is why use them? They seem to only confuse things, I mean you can't read them as easy as you can with regular numbers or can you? OK... so why use them (=

Macro:
What is a macro...? Some one mentioned it while talking about programming so I thougth I'd ask.
Well that's all i have for that one, (=

C != graphics?
So it seems that all c can do is simple printing to the terminal screen )= Is there any way to make a window or anything nice looking (=
If I ever did want to add graphics to my programs would I have to learn c++
On this note what is C not good for, what would you never make a program in with c?

lvalue and rvalue?
My compiler laughs at me and says I have an error with the above words...
So my first question is whats the command to force my computer to throw itself out a window... (=
These only deal with improperly using variables, putting values on wrong side etc. right?

Parameter = Argument?
What is the main difference between the two?

Recursion:
So I can make a function call itself? That sounds very "interesting" so how would I do that and what would my intention be if I did?

Memory Buffer?
I'm sure this is an easy one to look up, but if anyone would please tell me what it is and how it affects my programs I would be very grateful (=

Well I had at least 20 other questions but... I think I wont post them (=
We'll see if my first comment is "google" (=

I appreciate any help/insight into the above questions.
Thanks in advance for any help that you can give
BTW my first checking of this I got 70 mispellings (= I tried to get rid of them to make it easier to understand my questions forgive me if I missed some )=
-Raven'sWrath