關於指標的命名

2021-08-22 12:08:51 字數 1557 閱讀 5098

對面指標的命名有時候比較混亂,最主要的是指標定義所指向的意義不同,儘管有時候相同的命名規範,但是有著不同的意思

int i = 5;

int *pi = &i;   //這就是乙個整型變數的位址

int ivreay[5] = {};

int *pivreay = ivreay; //這是乙個指向一維陣列的指標

//為什麼陣列不用&符號呢?因為直接寫陣列名的時候就相當於取了陣列的位址 

//ivreay是陣列的首位址,&ivreay是不符合語法的,因為ivreay是常數字址,它是沒有位址的位址, 

int *pivreay1 = &ivreay[0];//這是指向一維陣列中第乙個元素的位址

int ivreay1[3][5] = {};

//為什麼到這來左邊命名規範有變化,在一維陣列中或者定義的變數中,他們的位元組大小

//就是所定義的資料型別的大小,對應的指標大小沒有變化,在系統中除了(void*)指標不能解析外

//其他型別指標都有著可以解析的,也就是說,一維陣列解析後是乙個元素的位址,所以,指標大小沒有變化

//但是在二維陣列中就不同了,二維陣列位址解析後是一維陣列位址,一維陣列多大呢?就看一維陣列

//中的元素,也就是二維陣列中的列數,所以,命名規範就有所變化由原來的int*i變成

//int(*i)[5],也是為了區分指標陣列int*i[5],因為指標陣列存的是指標,記憶體並沒有變化

//所以括號()不能省略,以此類推 int(*i)[5][3]所對應的是三維陣列的位址,

int(*i)[5] = ivreay1;   //這是乙個指向二維陣列的位址

int(*i)[5] = &ivreay1[0]; //這是乙個指向二維陣列中第乙個一維陣列的位址

//為什麼這裡就可以用&符號呢?因為在二維陣列中 一維陣列相當於二維陣列的元素,

//也就是說相當於取元素的位址,只不過這個元素數乙個一維陣列,一種包含關係

//所以按照以上總結

int *j = &ivreay1[3][3];   //這就是乙個變數元素的位址,記憶體大小一樣,所以可以用int*j儲存

int num[3][2][2] = {};

int(*i)[2][2] = num;   //  3維陣列也是如此,以此類推

int(*i)[2][2] = &num[0];

//指向乙個普通變數的指標稱為一級指標,指向一級指標的指標稱為二級指標,以此類推

//也就是只能指向相同型別大小的指標,所以可以指向一維陣列,不能指向多維陣列

int* *p = &pivreay;  //二級指標指向一維陣列指標,也就是指標的指標

/*一般的指標的命名:

看讀法如:    前面的格式能分開就把後面放在中間(函式有兩部分,1返回值型別,2參數列)

函式指標:函式格式  資料型別 (函式引數表)  ,然後把指標括起來放在中間就可以

int (*p)(函式引數表)

不能分開的就依次寫格式    (指標只有一部分,指標型別(如 int*))

指標函式 :   函式返回資料型別 *函式名稱(形式參數列)

void * num(void)     

關於命名空間

為什麼要使用命名空間 在應用程式開發過程中,類和類成員的名稱是豐富的,為了描述乙個具體的物件,需要對類成員進行設計。在設計類和類成員過程中,不可避免的類成員中的方法或者類的名稱會出現相同的情況,這樣就會使類的使用變得複雜,的混亂造成可讀性降低,使用命名空間可以解決這樣的問題。比如,下面的這個例子 n...

關於命名等

區分 1.如果乙個字型名中包含多個單詞,例courier new。需要在font family宣告中的字型名兩邊加上引號 font family courier new serif 區分大小寫 2.class名 class屬性中如果存在空格,則表示此標籤引用了2個class屬性。3.id名 id名是...

關於命名空間

1.什麼是命名空間 程式語言使用的一種 組織的形式 通過命名空間來分類,區別不同的 功能2.命名空間的作用 命名空間是用來組織和重用 的 1 如同名字一樣的意思,namespace 名字空間 之所以出來這樣乙個東西,是因為人類可用的單詞數太少,並且不同的人寫的程式不可能所有的變數都沒有重名現象,對於...