यहाँ मेरे पास 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]
बनाता है । पॉइंटर सिंटैक्स जैसे कि सच-बहुआयामी सरणियों को गतिशील रूप से आवंटित करना आवश्यक है। नेस्टेड लूप्स के साथ बनाई गई "2-आयामी सरणियों" और गलत तरीके से बहुआयामी सरणियों के रूप में वर्णित वास्तव में 1-d सरणियों से कई 1-d सरणियों के बिंदु हैं। देखें stackoverflow.com/questions/42094465/...ptr
int
malloc()
int *ptr = arr;
? यह इसे सरणी के पहले (पहले तत्व) के लिए इंगित करेगा, जो समकक्ष है&arr[0]
।