### Function

# GLib SList append

#### Declaration

    GSList*
    g_slist_append (
      GSList* list,
      gpointer data
    )

#### Description

Adds a new element on to the end of the list.

The return value is the new start of the list, which may have changed, so make sure you store the new value.

Note that `g_slist_append()` has to traverse the entire list to find the end, which is inefficient when adding multiple elements. A common idiom to avoid the inefficiency is to prepend the elements and reverse the list when all elements have been added.

    // Notice that these are initialized to the empty list.
    GSList *list = NULL, *number_list = NULL;

    // This is a list of strings.
    list = g_slist_append (list, "first");
    list = g_slist_append (list, "second");

    // This is a list of integers.
    number_list = g_slist_append (number_list, GINT_TO_POINTER (27));
    number_list = g_slist_append (number_list, GINT_TO_POINTER (14));

This function is not directly available to language bindings.

#### Parameters

`list`

  Type: A list of `gpointer`

  A `GSList`.

  The data is owned by the caller of the function.

`data`

  Type: `gpointer`

  The data for the new element.

  The argument can be `NULL`.
  The data is owned by the caller of the function.

#### Return value

Type: A list of `gpointer`

The new start of the `GSList`.

The data is owned by the called function.