Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding char array[] and string

I am new to programming. I am learning C as my first programming language. I found something strange to understand.

I have learnt that in C we can represent a String as a sequence of characters like this (using a char array):

char status[10] = "Married";   

I have learnt that the problem of this approach is that we have to tell the size of the status array during compilation.

But now I have learned we can use a char pointer to denote an string like -

char status[10] = "Married";
char *strPtr;
strPtr = status;

I don't understand it properly. My questions are -

  1. How can I get char at index 4 (that is i in Married) using the strPtr?

  2. In status there is a null character (\0) at the end of the string represented by the char array - M-a-r-r-i-e-d-\0. So by using the null character (\0) we can understand the end of the string. When we use strPtr, how can we understand the end of the string?

like image 575
KajolK Avatar asked Mar 31 '15 10:03

KajolK


People also ask

Is char [] the same as string?

char is a primitive data type whereas String is a class in java. char represents a single character whereas String can have zero or more characters. So String is an array of chars. We define char in java program using single quote (') whereas we can define String in Java using double quotes (").

What is difference between character array and string array?

String is implemented to store sequence of characters and to be represented as a single data type and single entity. Character Array on the other hand is a sequential collection of data type char where each element is a separate entity.

Is char [] a string in C?

In C programming, a string is a sequence of characters terminated with a null character \0 . For example: char c[] = "c string"; When the compiler encounters a sequence of characters enclosed in the double quotation marks, it appends a null character \0 at the end by default.

What is the difference between char [] and char *?

Difference between char s[] and char *s in CThe s[] is an array, but *s is a pointer. For an example, if two declarations are like char s[20], and char *s respectively, then by using sizeof() we will get 20, and 4. The first one will be 20 as it is showing that there are 20 bytes of data.

Why is a char array is char [] preferred over string to store a password?

Since String is immutable, there is no method defined that allow us to change or overwrite the content of the string. This feature makes string objects unstable for storing secure information such as passwords, SSN, etc. We should always store the secure information in char[] array rather than String.

What does char * [] mean in C?

char* is a pointer to a character, which can be the beginning of a C-string. char* and char[] are used for C-string and a string object is used for C++ springs. char[] is an array of characters that can be used to store a C-string.


1 Answers

char *strPtr;
strPtr = status;

Now your pointer strPtr is pointing to the first character in the array and you can do

int i =0;
while( strPtr[i] != '\0')
{
  printf("%c ",strPtr[i]);
  i++;
}

*strPtr is called dereferencing the pointer to get the value stored in the location the pointer is pointing to.

Make a note that

strPtr[4] = *(strPtr +4); 

Both will get you the value stored at the index 4 of the array.

Note the difference between a pointer and a array name:

----------------------------------
| s  | t  | r  | i  | n | g | \0 |
----------------------------------
  |
strPtr
status

strPtr ++ will make your pointer point to the next element in the array.

| s  | t  | r  | i  | n | g | \0 |
----------------------------------
       |
      strPtr

Whereas you can't do this for the array name

status++ is not allowed because an array is not a modifiable lvalue.

like image 99
Gopi Avatar answered Sep 27 '22 18:09

Gopi