unsigned,const,static,extern

一. unsigned和signed

          1.存儲範圍不同,以16位計算機爲例:signed的存儲範圍是(-2^15 -- 2^15-1)即 -32768到 + 32767  的整數

                                                                            unsigned的存儲範圍是(0 -- 2^16-1)即 0 到 + 65535  的非負整數

           在聲明int的時候,在可以保證是正整數的前提下,聲明爲unsigned,可以擴大存儲範圍

               (signed a=1;  signed a = -1; signed long a = 1; unsigned a = 1;)

二. const 修飾符, 將其後面的變量設置爲常量

                              NSString *const str2 = @"str2";

                              str2 = @"str3";    // 報錯

                              --------------------------------------------------

                              NSString const *str2 = @"str2";     等價於     const NSString *str2 = @"str2";

                              str2 = @"str3";    //編譯通過

const的位置不同,作用不同:

        NSString *const str1
        不可以修改常量指針指向的原內存中的內容,常量指針不可以指向其他的內存
        NSString const *str2"
        不可以修改常量指針指向的原內存中的內容,常量指針可以指向其他的內存
        NSMutableString const *var1
        可以修改常量指針指向的原內存中的內容,常量指針可以指向其他的內存
        NSMutableString *const var2
        可以修改常量指針指向的原內存中的內容,常量指針不可以指向其他的內存

 

三. static

               1.修飾局部變量 : 保證局部變量只初始化一次,在程序的運行過程中只有一份內存

2.修飾全局變量  :使全局變量的作用域僅限於當前文件內部,即當前文件內部才能訪問該全局變量,即使在聲明爲全局變量的文件中也是如此。

 

四 extern   

聲明外部全局變量。      extern只能聲明,不能用於實現,所以在.h裏面聲明,在.m裏面實現。

只要導入頭文件,就可以全局的使用定義的變量或常量

@interface PublicFile : NSObject

@end

extern NSString * const fileName;
extern NSString * const externValue;
extern BOOL beyondHalf(int value);
extern NSString *exValue(void);

static NSString * staticValue(void);  //外部直接用會報錯

 

#import "PublicFile.h"

@implementation PublicFile

static NSString * createStaticValue(NSString *str){
    return [@"this is static value with " stringByAppendingString:str];
}
@end

NSString * const fileName = @"fileNameValues";
NSString * const externValue = @"externValues";

NSString *exValue(void){
    return staticValue();
}

NSString * staticValue(void){
    return createStaticValue(@"appending");
}

BOOL beyondHalf(int value){
    if (value>5) {
        return YES;
    }
    return NO;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章