एक चीज जो हमेशा मुझे उलझन में डालती है, चरित्र सूचक। यह चार साल बाद है कि मैं फिर से सी में लूंगा।एक सूचक प्रारंभ करने के लिए क्या करता है?
उदाहरण के लिए उल्लिखित मामला लें। char
पॉइंटर इस तरह से व्यवहार क्यों करता है? पॉइंटी की सामग्री को सीधे कैसे संबोधित किया जा सकता है जब यह कुछ भी इंगित करता है या यह पते के अलावा चार पॉइंटर स्टोर्स सामान की तरह है!
#include <stdio.h>
#include <stdlib.h>
int main()
{
char* charPtr="I cant understand why";
int* intPtr=60;
printf("%d\n", intPtr); //displays 60
printf("%p\n", intPtr); // displays the hex value of 60
printf("%s\n", charPtr); // displays the wh0le string
printf("%p\n", charPtr); // displays the start address of the string
return 0;
}
अगला int
सूचक, यह कैसे मान 60 स्वीकार कर सकते हैं और जहां यह संग्रहीत होता है?
चार पॉइंटर और मॉलोक को छोड़कर, मैंने सोचा कि सूचक का मूल विचार इंगित करने के लिए एक पता प्राप्त करना था!
क्यों इन मामलों, जबकि
int* intPtr=60;
एक पते के बिना में चोरी (या 60 पते के रूप में लिया है
*intptr = 60 ; // should be setting the pointee's value to 60
intptr = 60 ; // sets the address
फेंक संकलन त्रुटि करता है यदि ऐसा है तो क्यों यह नहीं स्वीकार्य नहीं है पूर्व मामले) पॉइंट के!
मुझे लगता है कि मुझे कुछ याद आ रही है लेकिन हे! अंदाज़ा लगाओ ? उन्होंने मुझे एसओ में खोजने के लिए कहा!
संपादित करें: चार सूचक द्वारा इंगित पते को एक इंट पॉइंटर पर इंगित करने से भी कोई त्रुटि नहीं होती है!
int8_t* intPtr= (int8_t*)0x80485c8 ; // works without casting too ! I guess addresses are acceptable.
अपसंदर्भन यह पहली I
स्ट्रिंग के लिए एक मूल्य के बराबर दे देंगे यह एक अच्छा अभ्यास .is या वहाँ इस तरह के एक पूर्णांक एक चार धारण कर सकते हैं के रूप में उनके बाइट सा आकार आवंटन बाहर छोड़ने यह करने के लिए किसी भी अन्य स्पष्टीकरण मौजूद है इसलिए.. ?
जैसा कि एचएमजेडी ने 'प्रारंभिक वाक्यविन्यास' को इंगित किया है समस्या है! मुझे अपना कोड लिखने में कोई समस्या नहीं है लेकिन किसी के कोड को संशोधित करते समय परेशानी उत्पन्न होती है!
यह जानना वास्तव में मुश्किल है कि आप वास्तव में क्या पूछ रहे हैं। एक सूचक एक चर है जिसका मूल्य आमतौर पर किसी अन्य चर का पता होता है। –
* मुझे लगता है कि मैं यहाँ कुछ याद कर रहा हूं * अच्छा सी प्रोग्रामिंग पुस्तक/ट्यूटोरियल, वास्तव में। आपने बहुत से पूछे जाने वाले प्रश्न पूछे। –
@ डेविडस्वार्टज़ हां! यह भी मेरे लिए मूल विचार है :) लेकिन यहां क्या हो रहा है? – Borrito