C Programming - Strings - Discussion

Discussion Forum : Strings - Point Out Correct Statements (Q.No. 2)
2.
Which of the following statements are correct about the below declarations?
char *p = "Sanjay";
char a[] = "Sanjay";
1: There is no difference in the declarations and both serve the same purpose.
2: p is a non-const pointer pointing to a non-const string, whereas a is a const pointer pointing to a non-const pointer.
3: The pointer p can be modified to point to another string, whereas the individual characters within array a can be changed.
4: In both cases the '\0' will be added at the end of the string "Sanjay".
1, 2
2, 3, 4
3, 4
2, 3
Answer: Option
Explanation:
No answer description is available. Let's discuss.
Discussion:
17 comments Page 2 of 2.

Mangusta said:   1 decade ago
I think there is typo in the second statement:

2: p is a non-const pointer pointing to a non-const string, whereas a is a const pointer pointing to a non-const pointer.

'a' can be considered a constant pointer, pointing to a non-const STRING, not POINTER.

Actually 'a' has type char[7] here, so in reality it is not a pointer, not even constant.

On the other hand, 'p' has type char*, so it is a pointer.

Ronil said:   1 decade ago
Is null character added at the end of 2nd statement?I think. Its wrong.

In 1st case null char is added. But for 2nd its wrong.

Neeraj said:   1 decade ago
We can chnage the individual characters in a string but not the whole string at a time...eg:
#include<stdio.h>
int main()
{
char str[] ="Visual";
*(str+2)='K';
printf("%s",str);
return 0;
}
similarle,to change other characters ,we can put some other value.

Girish nischel said:   1 decade ago
yeah! i believe that option 3 is wrong because when we declare

char a[]={"girish"};

the entire array is initialised! hence i believe v cannot change the individual element.if v can really change then wt wl b the output for the following?

char a[]={"giri"};
printf("%c",a[2]);

Krishna said:   1 decade ago
In first statement the character pointer p stores the address of the string "Sanjay".
The second statement specifies the space for Sanjay characters be allocated and that the name of location is a[].

Shruti said:   1 decade ago
Why can't the 1st option be correct?

Ravi said:   1 decade ago
I think option 2 is not correct. We cannot modify the string "Sanjay".


Post your comments here:

Your comments will be displayed after verification.