常量與指標
指標陣列:定義的變數是乙個陣列,陣列的每個元素都是乙個指定型別的指標。基本定義格式為:type*var_name[n]; 例如:
//定義乙個包含100個元素的整型指標陣列p
int*p[
100]
;//下面這種定義方式與上面等價,因為運算子優先順序高於*運算子
int*
(p[100])
;int
main()
;int i;
for(i=
0; i<5;
++i)
else
}for
(i=0
; i<5;
++i)
printf
("\n");
for(i=
0; i<5;
++i)
}return0;
}
陣列指標:定義的變數是乙個指標,該指標指向特定長度的陣列。基本定義格式:type(*var_name)[n]; 例如:
//定義乙個指向包含100個整型資料的一維陣列p
int(
*p)[
100]
;int
main()
for(i=
0; i<5;
++i)
p = num;
for(i=
0; i<5;
++i)
for(i=
0; i<5;
++i)
return0;
}
主要關注一下二維陣列做函式引數的情況。
二維陣列做函式引數時,以下情況是合法的使用方式:
int
numsum
(int num[5]
[10])
intnumsum
(int num[
10]);
或者使用陣列指標的方式:
int
numsum
(int
(*num)[10
])
又或者使用二維指標做函式形參,二維陣列做實參:
int
numsum
(int
**num,
int n,
int m)
這種情況下不能按照一般的訪問二維陣列的方式num[i][j] 獲取陣列元素的值,要按照以下手工定址的方式獲取:
*((
int*
)num + m*i + j)
;
以下使用方式是非法的:
int
numsum
(int num[
])intnumsum
(int num[5]
)
指標常量:定義的指標是乙個常量,即指標本身的值初始化之後不可再改變(因此,在定義指標常量時就須對其初始化),但可以改變該指標所指向變數(常量)的值(不能直接修改常量的值,卻可以通過指標常量修改常量的值,因此在使用時要注意,避免把常量位址賦值給指標常量,以防操作不當修改了常量的值)。定義形式:type * constvar_name; 例如:
//定義乙個整型的指標常量p,指向乙個整型變數num
int num1 =
10, num2 =12;
int*
const p =
&num1;
//非法操作,不可以修改指標常量的指向
p =&num2;
/*例2*/
const
int num =10;
int*
const p =
#//output:10,10
printf
("num = %d, *p = %d\n"
, num,
*p);
num =20;
//非法操作
*p =20;
//合法操作
//output:20,20
printf
("num = %d, *p = %d\n"
, num,
*p);
常量指標:指標本身是乙個變數,其指向乙個常量,不可以通過常量指標修改其所指向的常量的值,但可以改變常量指標的指向。定義形式:const type*var_name; 或type const*var_name; 例如:
//定義兩個常量指標p1、p2,分別指向num1、num2
const
int num1 =
10, num2 =12;
const
int*p1 =
&num1;
intconst
*p2 =
&num2;
//輸出10,12
printf
("*p1 = %d, *p2 = %d\n"
,*p1,
*p2)
;p1 =
&num2;
p2 =
&num1;
//輸出12,10
printf
("*p1 = %d, *p2 = %d\n"
,*p1,
*p2)
;//以下操作非法
*p1 =30;
*p2 =
20;
指向常量的指標常量:指標本身是常量,並且其指向的也是常量,定義時初始化之後,既不可以改變指標的指向,也不可以改變其所指向的值(無論其初始化時指向的是變數還是常量)。定義形式:*const type const
var_name; 例如:
int num1 =10;
const
int num2 =10;
const
int*
const p1 =
&num1;
const
int*
const p2 =
&num2;
//以下試圖改變p1、p2的指向或改變其所指向的值都是非法的
p1 = p2;
*p1 =30;
*p2 =
20;
python 基本語法 拾遺
django 開發中一般見到的python 內部類,最多是在model 設計過程中。所謂內部類,就是在類內部定義的類,主要目的是為了更好的抽象現實世界。內部類的距離 汽車是個類,汽車的地盤,輪胎也可以抽象為類,將其定義到汽車類中,則形成了內部類,更好的描述汽車類,因為底盤,輪胎是汽車的一部分 一般不...
C語言拾遺
main函式引數 c語言規定main函式引數只能有兩個,習慣上這兩個引數寫成argc和argv。c語言還規定argc必須是整形變數,argv必須是指向字串的指標陣列。因此,main函式的函式頭應該寫為 main argc,argv int argc char argv 或者 main int arg...
C語言拾遺
保證某些全域性變數的常量性 c c 中不能通過變數來定義陣列 const int row 10 const int col 10 c define row 10 define col 10orenum c style型別轉換 new type expression static cast expre...