A function that moves a tile in the game of fifteen
Reading past array bounds
Each of your four checks has the possibility of reading past array bounds.  Very bad things can happen when that happens.  I will illustrate with an example:
Let board be defined as int board[3][3], and lettile = 1, space[0] = 2, space[1] = 2.  When the code reaches this first check:

  if ( board[ space[0] ][ space[1] + 1 ] == tile ) {

    board[ space[0] ][ space[1] + 1 ] = 0;

    board[ space[0] ][ space[1] ] = tile;
    space[1]++;

    return true;
  }


It will read the value of board[2][3], which is past the end of the board array.  The memory location corresponding to board[2][3] is 4 bytes past the end of board, and will probably be occupied by some other global variable in your program.  Suppose this memory location contains the value 1.  In this case, you will swap the 1 with the 0 in board[2][2], and then you will set space[1] to 3 which is outside of your board dimensions.  So now:

Whatever global variable held the value 1 will now have the value 0 for no reason.
The next time you call into this function, you will be reading even further out of bounds because space[1] is 3, which will cause you to read from board[2][4].

Simplify with loop
Instead of writing each of your four direction checks separately, you can combine them into a single loop.  Here is how I would do that (with additional bounds checking as well to fix the first problem):
bool move(int tile, int space[])
{
    int dx[4] = {  0,  0,  1, -1 };
    int dy[4] = {  1, -1,  0,  0 };

    // Check in each of the four directions.
    for (int i = 0; i &lt; 4; i++) {
        int x = space[0] + dx[i];
        int y = space[1] + dy[i];

        // If out of bounds, skip this direction.
        if (x &lt; 0 || x &gt;= BOARD_SIZE || y &lt; 0 || y &gt;= BOARD_SIZE)
            continue;

        // If we find the tile, swap them with the empty space.
        if (board[x][y] == tile) {
            board[x][y] = 0;
            board[space[0]][space[1]] = tile;
            space[0] = x;
            space[1] = y;
            return true;
        }
    }
    return false;
}