C 指標易錯點梳理

2022-01-22 04:37:35 字數 1354 閱讀 9004

1 指標定義

指標是乙個變數;指標的值是另乙個變數的位址。變數的宣告

type *var-name;

var-name是指標變數的名稱。星號是用來指定乙個變數var-name是指標變數。

int    *ip;    /*

變數ip是乙個整型的指標

*/

#include using

namespace

std;

intmain ()

value of var variable: 20

address stored

in ip variable: 0xbfc601ac

value of *ip variable: 20

2 例項辨析

double

dval;

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 考察點 區域性作用域...