對面指標的命名有時候比較混亂,最主要的是指標定義所指向的意義不同,儘管有時候相同的命名規範,但是有著不同的意思
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 名字空間 之所以出來這樣乙個東西,是因為人類可用的單詞數太少,並且不同的人寫的程式不可能所有的變數都沒有重名現象,對於...