A stack is a last in, first out (LIFO) abstract data type and data structure. One common use of stacks is to store subroutine arguments and return addresses.
Both the stack and the heap refer to different locations where memory (typically for variables) is managed, but with significantly different strategies.