EmbLogic's Blog

What is the diffrence between single quoted and dauble quoted declaration of char array

In C/C++, when a character array is initialized with a double quoted string and array size is not specified, compiler automatically allocates one extra space for string terminator ‘?. For example, following program prints 6 as output.
#include
int main()
{
char arr[] = “geeks”; // size of arr[] is 6 as it is ” terminated
printf(“%d”, sizeof(arr));
getchar();
return 0;
}

If array size is specified as 5 in the above program then the program works without any warning/error and prints 5 in C, but causes compilation error in C++.
// Works in C, but compilation error in C++
#include
int main()
{
char arr[5] = “geeks”; // arr[] is not terminated with ”
// and its size is 5
printf(“%d”, sizeof(arr));
getchar();
return 0;
}

When character array is initialized with comma separated list of characters and array size is not specified, compiler doesn’t create extra space for string terminator ‘?. For example, following program prints 5.
#include
int main()
{
char arr[]= {‘g’, ‘e’, ‘e’, ‘k’, ‘s’}; // arr[] is not terminated with ” and its size is 5
printf(“%d”, sizeof(arr));
getchar();
return 0;
}

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>