Advanced C Pointer Programming chapter 6: Pointers and Strings.

There is no separate data type in C to hold strings.

In C, strings are character array. They should always end with NULL “\0” character.

While allocating memory for strings, space should be allocated for NULL character also.

C allows us to create a static strings or dynamic strings using pointers.

We usually send C strings to other functions with the help of char pointer.

How many different ways to initialize strings in C?

There are 3 different ways to initialize C strings.

1. Statically allocate memory
2. Dynamically allocate memory
3. Allocation in read only segment.

1. Creating string in stack memory

This is very simple way to create a string.

You will create a char array to hold the string value. It should be terminated by NUL character ‘\0’. THe space should also be allocated for NUL character.

Example:

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

  
int main() 
{ 

    char arr[] = "Hello";
    char arr_1[30] = "ProDeveloperTutorial";
    char arr_2 [10] = {'a', 'b', 'c', 'd', 'e', '\0'};

    printf("arr = %s \n", arr);
    printf("arr_1 = %s \n", arr_1);
    printf("arr_2 = %s \n", arr_2);

    return 0; 
} 

Output:

arr = Hello
arr_1 = ProDeveloperTutorial
arr_2 = abcde

 

2. Creating string in heap memory

You can also allocate memory dynamically my using malloc or calloc.

To copy the value into dynamically allocated string, you need to use “strcpy” function.

Example:

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

  
int main() 
{ 

    char *char_ptr = (char*) malloc(100);


    strcpy(char_ptr, "www.ProDeveloperTutorial.com");

    printf("String is  = %s \n", char_ptr);

    return 0; 
} 

Output:

String is = www.ProDeveloperTutorial.com

3. Creating string in read only memory

If you create a string as shown below. The string will be a read-only and will be created in read only segment. That address will be given to char_ptr.

Trying to modify the value pointed by char_ptr will result in undefined behavior.

    char *char_ptr = "www.ProDeveloperTutorial.com";

Example:

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

  
int main() 
{ 

    char *char_ptr = "www.ProDeveloperTutorial.com";

    printf("char_ptr = %s \n", char_ptr);


    return 0; 
} 

Output:

char_ptr = www.ProDeveloperTutorial.com

Consider below example, why we don’t derefer string while printing it?

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

  
int main() 
{ 

    char *char_ptr = "www.ProDeveloperTutorial.com";

    printf("String is  = %s \n", char_ptr);
    printf("Char is = %c \n", *char_ptr);


    return 0; 
} 

Output:

String is = www.ProDeveloperTutorial.com
Char is = w

Why we dont derefer for “%s” but we derefer for “%c” ?

“%s” expects a pointer type argument.

“%c” expects a character.

How to pass a simple string to a function in C?

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

void display_string(char *ptr)
{
    printf("The string is = %s\n", ptr);
}
  
int main() 
{ 

    char *char_ptr =  "www.ProDeveloperTutorial.com";

    display_string(char_ptr);

    return 0; 
} 

Output:

The string is = www.ProDeveloperTutorial.com

How to return a simple string to a function in C?

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

char* get_string()
{
    char *char_ptr = (char*) malloc(100);


    strcpy(char_ptr, "www.ProDeveloperTutorial.com");

    return char_ptr;

}
  
int main() 
{ 

    char *char_ptr =  get_string();

    printf("String is  = %s \n", char_ptr);

    return 0; 
} 

Output:

String is  = www.ProDeveloperTutorial.com
Write a Comment

Leave a Comment

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