2014-05-12 8 views
8

आमतौर पर, मैंने देखा है कि कोड स्थिरांक घोषित करने के लिए सिर्फ इस तरह था:क्या "स्थिर एनएसआईएनटेगर कॉन्स" और "स्थिर कॉन्स एनएसआईएनटेगर" के बीच कोई अंतर है?

static const NSInteger kNum = 1; 
static NSString * const kStr = @"A"; 

मैं जानता हूँ कि क्यों constNSString * के पीछे लिखा जाना चाहिए, लेकिन मुझे यकीन है कि अगर static NSInteger const kNum = 1; और static const NSInteger kNum = 1; ही कर रहे हैं नहीं कर रहा हूँ।

static NSInteger const और static const NSInteger के बीच कोई अंतर है?

उत्तर

18

वे वही हैं। एक निरंतर प्रकार एक दिया प्रकार से "व्युत्पन्न" किया जा सकता है में से एक लिख कर:

const type 
type const 

आदेश इस मामले में कोई फर्क नहीं पड़ता।

ये निरंतर डेटा के लिए एक चर संकेत दिए गए हैं:

type const* var 
const type* var 

जिसका मतलब है कि सूचक बदला जा सकता है, लेकिन डेटा नहीं कर सकते हैं (जब तक आप यह डाली)। आप इसे "बाएं से स्थिर टाइप" के रूप में दाएं से बाएं पढ़ सकते हैं।

type* const var 

नोट बंधन:

यह चर डेटा के लिए एक निरंतर सूचक है।

जिसका अर्थ है कि पॉइंटर को कहीं और इंगित करने के लिए नहीं बनाया जा सकता है, लेकिन आप डेटा बदल सकते हैं। आप उस दाएं से बाएं को पढ़ सकते हैं "टाइप पर निरंतर सूचक"।

यह कोई आश्चर्य की बात दोनों सूचक और डेटा निरंतर बना रही इस तरह से किया जा सकता है कि के रूप में आ जाएगा:

type const* const var 
const type* const var 
संबंधित मुद्दे