+ 1

Why ZERO in integer array in C++ is considered as NULL?

I've entered zero as an integer in an array and when using a function to print array (show()) it exits the function considering the ZERO as NULL. array = {1,2,3,0,4,5} expected output = 1 2 3 0 4 5 output = 1 2 3 Why is it so? And what else should I use to reach out to the end of an integer array? Thank you THE FUNCTION: int show(int arr[]) //p r i n t a r r a y { int i; for(i = 0; arr[i]!='\0'; ++i) { cout<<arr[i]<<"\t"; } if(arr[0]=='\0') cout<<"Emptry Array"; return 0; }

29th Jan 2021, 2:05 PM
Ayush Dubey
Ayush Dubey - avatar
4 Réponses
+ 4
'\0' is nothing different than 0 ('\0' is the character representation of the integer value 0) ... It is used for string termination. As an array has a known length, you dont need to use a termination character to detect the end of array. The length is len = sizeof(arr) / sizeof(arr[0]) Your loop could then be for (i=0; i < len; i++)...
29th Jan 2021, 2:13 PM
G B
G B - avatar
+ 1
In C/C++, all the characters (including NULL character) are represented in memory as their ASCII values. And ASCII value of '\0' is 0. So you for loop is interpreted as for (i = 0; arr[i] != 0; i++)
29th Jan 2021, 3:02 PM
Arsenic
Arsenic - avatar
0
@G B suppose I need to append an element in the array then what shall I use?
29th Jan 2021, 2:20 PM
Ayush Dubey
Ayush Dubey - avatar
0
In c++ it is not possibile to change the size of an array at runtime.. If you need to do so, use vetor. Example: #include <vector> #include <iostream> using namespace std; int main (void) { vector <int> v; v.push_back(12); // will add 12 to vector v.push_back(13); // will add 13 to vector v.push_back(27); // will add 27 to vector len = v.size(); cout << len << endl; // size of vector: 3 v.push_back(99); // will add 99 to vector cout << len << endl; // size of vector: 4 for (int i = 0; i < len; i++) { cout << v[i] << endl; } // prints: // 12 // 13 // 27 // 99 return 0; }
29th Jan 2021, 2:42 PM
G B
G B - avatar