1 指標定義
指標是乙個變數;指標的值是另乙個變數的位址。變數的宣告
type *var-name;
var-name是指標變數的名稱。星號是用來指定乙個變數var-name是指標變數。
int *ip; /*變數ip是乙個整型的指標
*/
#include usingnamespace
std;
intmain ()
value of var variable: 20address stored
in ip variable: 0xbfc601ac
value of *ip variable: 20
2 例項辨析
doubledval;
double *pd = &dval; ##正確。宣告同時初始化
double *pd2 =pd; ##正確。pd指標存放的是dval的位址
int *pd3 = pd; ##錯誤。pd3的型別和pd型別不符
3 解引用賦值和指標賦值
星號*有兩種不同含義:
(1)解引用符
(2)宣告變數p是指標
##int num = 7
;
int *p = #
printf(
"數值%d所在的位址是 %p\n
", num, p);
printf(
"指標p所指向的位址為 %p , 該位址上所儲存的值為%d\n
", p, *p);
*p = 100
; ##這裡的*是是解引用操作符,對*p賦值(對左值賦值),從而改變p所指的位址上所儲存的值,從而改變此位址所儲存的變數num的值。(上面num的值變為100)
printf("指標p所指向的位址為 %p , 該位址上所儲存的值為%d\n
", p, num);
int num = 7, another = -5;
int *p = #
p = &another;
printf(
"%d\n
", *p);//
此時p指向了another,所以輸出了another的值,即-5
關鍵概念:
像&和*這種符號,既能做表示式裡面的運算子,又能做宣告的一部分。需要根據上下文區分。
指標難點 易錯點
voidf char c intmain f c 這裡的f char c 指向指標的指標 所以呼叫時一定要 使用指標 c 3 定義指標陣列 c 第乙個指標變數的位址。指標的位址 用指向指標的指標存放 二 例如 int a 3 4 ptr2是乙個指向 int 的指標,即ptr2的型別和 ptr是一樣的...
C的幾點易錯點,知識點梳理
c的幾點易錯點,知識點梳理 a.struct test int a int b 這是自己定義了乙個結構體。b.struct test int a int b test 這是自己定義了乙個結構體的同時,還申請了乙個結構體變數,名字是 test。c.typedef truct test int a in...
C 易錯點總結
1.下面這段 考察變數的作用域問題。cpp view plain copy include using namespace std void other intmain 答案如下 main 0 10 0 other 4 0 15 main 0 10 8 other 6 4 15 考察點 區域性作用域...