मैं अपने खाली समयसी में, मैं एक अलग चर में किसी सरणी के अंत में लिखे गए मान को क्यों देख सकता हूं?
बिताया है कुछ परीक्षण, मजेदार बातें कर रही है और इन दिनों सी में मेरी व्यक्तिगत खुशी के लिए सरल एल्गोरिथ्म, डेटा संरचना की तरह कुछ विभिन्न चीजों को लागू करने .... लेकिन, मुझे जानने समाप्त हो गया मेरे लिए कुछ दिलचस्प है। मुझे नहीं पता कि यह परिणाम अब तक क्यों हो रहा है ..
max_arr_count_index
arr[5]
मान के आधार पर असाइन किया गया है, जो सरणी +1 के अंत में है।
क्या कोई ऐसा है जो मुझे यह समझा सकता है? मुझे पता है कि यह नहीं होना चाहिए। मैंने मूल्य को पिछले मामले में सरणी (यहां, एआर [5] = 30 समस्या मामले में असाइन किया है) और यह सुरक्षित नहीं है, और यह मानक परिभाषित मानक द्वारा परिभाषित किया गया है।
मैं असली क्षेत्र में वही काम नहीं कर रहा हूं, लेकिन, मैं यहां हुड के नीचे और अधिक प्राप्त करना चाहता हूं।
एलएलवीएम और जीसीसी ने मुझे एक ही परिणाम दिया है।
कोड और परिणाम के नीचे है:
[नो प्रॉब्लम मामले: मैं सूचकांक के अंत अतीत मूल्य निर्दिष्ट नहीं है]:
[before]max_arr_count_index : 5
[before]The original array elements are :
arr[0] = 11
arr[1] = 33
arr[2] = 55
arr[3] = 77
arr[4] = 88
[after]max_arr_count_index : 5
[after]The array elements after :
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
Program ended with exit code: 0
#include <stdio.h>
int arr[] = {11,33,55,77,88};
int max_arr_count_index = (sizeof(arr)/sizeof(arr[0]));
// print all
void print_all_arr(int* arr)
{
// just print all arr datas regarding index.
for(int i = 0; i < max_arr_count_index; i++) {
printf("arr[%d] = %d \n", i, arr[i]);
}
}
int main(int argc, const char * argv[]) {
// insert code here...
printf("[before]max_arr_count_index : %d\n", max_arr_count_index);
printf("[before]The original array elements are :\n");
print_all_arr(arr);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
// arr[5] = 1000;
printf("[after]max_arr_count_index : %d\n", max_arr_count_index);
printf("[after]The array elements after :\n");
print_all_arr(arr);
return 0;
}
कोई समस्या नहीं है परिणाम के नीचे है
[समस्या का मामला: मैंने सूचकांक के पिछले अंत मूल्य को सौंपा]
#include <stdio.h>
int arr[] = {11,33,55,77,88};
int max_arr_count_index = (sizeof(arr)/sizeof(arr[0]));
// print all
void print_all_arr(int* arr)
{
// just print all arr datas regarding index.
for(int i = 0; i < max_arr_count_index; i++) {
printf("arr[%d] = %d \n", i, arr[i]);
}
}
int main(int argc, const char * argv[]) {
// insert code here...
printf("[before]max_arr_count_index : %d\n", max_arr_count_index);
printf("[before]The original array elements are :\n");
print_all_arr(arr);
arr[0] = 1;
arr[1] = 2;
arr[2] = 3;
arr[3] = 4;
arr[4] = 5;
/* Point is this one.
If I assign arr[5] 30, then, max_arr_count_index is changed also as
30. if I assign arr[5] 10000 max_arr_count_index is assigned 10000.
*/
arr[5] = 30;
/* Point is this one.
If I assign arr[5] 30, then, max_arr_count_index is changed also as
30. if I assign arr[5] 10000 max_arr_count_index is assigned 10000.
*/
printf("[after]max_arr_count_index : %d\n", max_arr_count_index);
printf("[after]The array elements after arr[5] is assigned 30 :\n");
print_all_arr(arr);
return 0;
}
परिणाम नीचे है:
[before]max_arr_count_index : 5
[before]The original array elements are :
arr[0] = 11
arr[1] = 33
arr[2] = 55
arr[3] = 77
arr[4] = 88
[after]max_arr_count_index : 30
[after]The array elements after arr[5] is assigned 30 :
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
arr[5] = 30
arr[6] = 0
arr[7] = 0
arr[8] = 0
arr[9] = 0
arr[10] = 0
arr[11] = 0
arr[12] = 0
arr[13] = 0
arr[14] = 0
arr[15] = 0
arr[16] = 0
arr[17] = 0
arr[18] = 0
arr[19] = 0
arr[20] = 0
arr[21] = 0
arr[22] = 0
arr[23] = 0
arr[24] = 0
arr[25] = 0
arr[26] = 0
arr[27] = 0
arr[28] = 0
arr[29] = 0
Program ended with exit code: 0
एक बार जब आप अपरिभाषित व्यवहार की भूमि में घूमते हैं तो कुछ भी हो सकता है –