w3resource

C programming: What is the difference between char a[] and char *a?

Difference between char a[] and char *a.

It is important to understand that 'char a[]' and 'char *a' are different ways of representing strings in C language.

char a[] is an array of characters. It is a fixed-size block of memory allocated on the stack, and its size cannot be changed at runtime. It is possible to modify the contents of the array, but the pointer to the first element a cannot be reassigned to point to another memory address.

Code:

# include <stdio.h>

int main() 
{
 char a[] = "python";
 a[0] = 'P';
 printf("%s\n", a); 
 return 0;
}

Output:

Python

char *a is a pointer to a character. It is a variable that holds the memory address of the first element of a character array or a string. The size of the array is not fixed, and it can be dynamically allocated using memory allocation functions like malloc(). It is possible to modify the contents of the array through the pointer, and to reassign the pointer to another memory address.

Code:

#include <stdio.h>
int main() 
{
char *a = "hello";
// Following line create a runtime error because string literals are read-only
//a[0] = 'H';
a = "world";
printf("%s\n", a); 
return 0;
}

Output:

world


Follow us on Facebook and Twitter for latest update.