कार्यक्रमउपयोग
#include<stdio.h>
int main(){
int *p[10];
printf("%ld %ld\n",sizeof(*p),sizeof(p));
}
निम्न में से उत्पादन
8 <--- sizeof(*p) gives size of single element in the array of int *p[10]
80 <--- sizeof(p) gives size of whole array which is 10 * 8 in size.
अब निम्नलिखित कार्यक्रम
#include<stdio.h>
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0]))
int array[] = {23,34,12,17,204,99,16};
int main()
{
int d;
printf("sizeof(array) = %ld \n",sizeof(array));
printf("sizeof(array[0]) = %ld \n",sizeof(array[0]));
printf("sizeof int %ld\n",sizeof(int));
printf("TOTAL_ELEMENTS=%ld \n",TOTAL_ELEMENTS);
for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
printf("%d\n",array[d+1]);
return 0;
}
देखना है
sizeof(array) = 28
sizeof(array[0]) = 4 <--here
sizeof int 4
TOTAL_ELEMENTS=7
जो मैं समझ नहीं पा रहा हूं वह आकार (सरणी [0]) दोनों आउटपुट में अलग क्यों है।
मुझे लगता है कि एक एक 64 बिट मशीन, 32 बिट के लिए एक दूसरे के लिए संकलित किया गया है - बाइट्स
संभावना है कि आप AMD64 मशीन है कर रहे हैं। – groovingandi
@groovingandi int में 64-बिट मशीनों पर भी 4 बाइट हैं –
@ ग्रोविंगंडी नहीं, ये दोनों कार्यक्रम एक ही मशीन पर चल रहे थे। –