এখানে আমার কাছে 4 টি পূর্ণসংখ্যার ptr
অ্যারের পয়েন্টার রয়েছে arr
। ptr
পুরো অ্যারে নির্দেশ করে। ptr[0]
বা *ptr
অ্যারের প্রথম উপাদানটিকে নির্দেশ করে, সুতরাং 1 যুক্ত ptr[0]
করে অ্যারের দ্বিতীয় উপাদানটির ঠিকানা দেয়।
আমি বুঝতে পারি না কেন ব্যবহার sizeof(ptr[0])
করে পুরো অ্যারের আকার দেয়, 16 বাইট, কেবলমাত্র প্রথম উপাদানটির আকার নয়, 4 বাইট ( ptr[0]
অ্যারেতে প্রথম উপাদানটির জন্য পয়েন্ট হিসাবে )।
int arr[4] = {0, 1, 2, 3};
int (*ptr)[4] = &arr;
printf("%zd", sizeof(ptr[0])); //output is 16
int *ptr = arr;
? আসলে না. চারটি মানের পূর্ণ অ্যারের পয়েন্টার হিসাবে int (*ptr)[4]
তৈরি করে । সত্য-বহুমাত্রিক অ্যারেগুলি গতিশীলভাবে বরাদ্দ করার জন্য পয়েন্টার সিনট্যাক্সের মতো। নেস্টেড লুপগুলি দিয়ে তৈরি এবং বহুমাত্রিক অ্যারে হিসাবে ভুলভাবে বর্ণিত "দ্বি-মাত্রিক অ্যারে" সত্যিকার অর্থে একাধিক 1-ডি অ্যারেগুলিতে পয়েন্টারের 1-ডি অ্যারে। স্ট্যাকওভারফ্লো.comptr
int
malloc()
int *ptr = arr;
? এটি এটি অ্যারের শুরুতে (প্রথম উপাদানটির) নির্দেশ করবে যা সমান&arr[0]
।