#include<stdio.h>
int main(void){
int *ptr,a,b;
a = ptr;
b = ptr + 1;
printf("the vale of a,b is %x and %x respectively",a,b);
int c,d;
c = 0xff;
d = c + 1;
printf("the value of c d are %x and %x respectively",c,d);
return 0;
}
बाहर डाल मूल्यक्यों एक सूचक + 1 ऐड 4 वास्तव में
the vale of a,b is 57550c90 and 57550c94 respectively
the value of c d are ff and 100 respectively%
यह वास्तव में ptr +1 पता चला है, कारण है कि यह इस तरह से व्यवहार करते हैं है?
क्योंकि यह है कि पॉइंटर अंकगणित सी में कैसे काम करता है इसी तरह यह परिभाषित किया जाता है। जब आप 'int *' पॉइंटर में 1 जोड़ते हैं तो यह अगले 'int' ऑब्जेक्ट पर जाता है। जाहिर है, आपके प्लेटफ़ॉर्म 'int' पर 4 बाइट्स होते हैं। यह सी पॉइंटर्स के बारे में बुनियादी जानकारी है - जो कुछ आप किसी पुस्तक में पढ़ते हैं। – AnT
इस तरह के एक प्रश्न के लिए [मेरा पिछला उत्तर] (http://stackoverflow.com/a/8772201/119527) देखें। –
आपको पॉइंटर्स के लिए 'printf' प्रारूप तारों में'% p' का उपयोग करना चाहिए। इसके लिए '% x' का उपयोग न करें, यह पोर्टेबल नहीं है (क्योंकि पॉइंटर्स और 'int'-s की अलग-अलग बिट चौड़ाई हो सकती है)। –