C%20%20%20Interview%20Questions%20and%20Answers
Question: What is the difference between char a[] = ?string?; and char *p = ?string?; ?Answer:Answer1 a[] = ?string?; char *p = ?string?; The difference is this: p is pointing to a constant string, you can never safely say p[3]=?x'; however you can always say a[3]=?x'; char a[]=?string?; - character array initialization. char *p=?string? ; - non-const pointer to a const-string.( this is permitted only in the case of char pointer in C++ to preserve backward compatibility with C.) Answer2 a[] = ?string?; char *p = ?string?; a[] will have 7 bytes. However, p is only 4 bytes. P is pointing to an adress is either BSS or the data section (depending on which compiler ? GNU for the former and CC for the latter). Answer3 char a[] = ?string?; char *p = ?string?; for char a[]??.using the array notation 7 bytes of storage in the static memory block are taken up, one for each character and one for the terminating nul character. But, in the pointer notation char *p????.the same 7 bytes required, plus N bytes to store the pointer variable ?p? (where N depends on the system but is usually a minimum of 2 bytes and can be 4 or more)?? |
Is it helpful?
Yes
No
Most helpful rated by users:
- What is C++?
- What is function overloading and operator overloading?
- How do you find out if a linked-list has an end? (i.e. the list is not a cycle)
- What is the difference between declaration and definition?
- What is the difference between realloc() and free()?