C library - NULL Macro



The C library NULL Macro represent the value of a null pointer constant that may be defined as ((void*)0), 0 or 0L depending on the compiler vendor.

Following is the list of NULL macro structure −

  • NULL (void*)0: A null pointer cast to the void* type.
  • NULL 0: An integer literal representing a null pointer.
  • NULL 0L: A long integer literal representing a null pointer.

Syntax

Following is the C library syntax of the NULL Macro.

#define NULL ((char *)0)

or,

#define NULL 0L

or

#define NULL 0

Parameters

  • This is not a function. So, it doesn't accept any parameter.

Return Value

  • This macro doesn't return any value.

Example 1

Following is the basic C library macro NULL Macro to see its demonstration on file handling.

#include <stddef.h>
#include <stdio.h>

int main () {
   FILE *fp;

   fp = fopen("file.txt", "r");
   if( fp != NULL ) {
      printf("Opend file file.txt successfully\n");
      fclose(fp);
   }

   fp = fopen("nofile.txt", "r");
   if( fp == NULL ) {
      printf("Could not open file nofile.txt\n");
   }
   
   return(0);
}

Output

Assume that we have an existing file file.txt but nofile.txt does not exist. By compiling the above program, we get the following result −

Opend file file.txt successfully
Could not open file nofile.txt

Example 2

Below the given program shows the usage of memory allocation error using errno(macro).

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>

int main() {
   size_t size = 100000000000;

   int *arr = malloc(size * sizeof(int));
   if (arr == NULL) {
       fprintf(stderr, "Memory allocation failed: %s\n", strerror(errno));
   } else {
       printf("Memory allocated successfully!\n");
       free(arr);
   }

   return 0;
}

Output

On execution of above code, we get the following result −

Memory allocation failed: Cannot allocate memory
Advertisements