C++ Interview Questions and Answers
Prepare for your Interview today!
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)??
It tells the compiler that a variable or a function exists, even if the compiler hasn?t yet seen it in the file currently being compiled. This variable or function may be defined in another file or further down in the current file.
This is the way to initialize a pointer to a function
void fun(int a)
{
}
void main()
{
void (*fp)(int);
fp=fun;
fp(1);
}
By using the extern "C" linkage specification around the C function declarations.
It permits a program to reference an identifier in the global scope that has been hidden by another identifier with the same name in the local scope.
Most helpful rated by users: