指標學習 1

2021-10-10 04:12:37 字數 4179 閱讀 3811

:對於乙個變數來說,最重要的乙個特徵就是資料的寬度。

推薦不推薦

char* x;

char *x;

short* y;

short *y;

int* z;

int *z;

float* f;

float *f;

double *d;

double *d;

student* st;

student *st;

總結:

1.帶有 * 的變數型別的標準寫法: 變數型別* 變數名

2.任何型別都可以帶* ,加上*以後是新的型別

3.*可以是任意多個

char、short、int 型別變數的賦值:

精簡寫法

完整寫法

char x;

char x;

short y;

short y;

int z;

int z;

x = 1;

x = (char)1

y = 2;

y = (short)2;

z = 3;

z = (int)3;

帶 * 型別的變數的賦值:

char* x;

short* y;

int* z;

x = (char*)1;

y = (short*)2;

z = (int*)3;

資料的寬度:

char、short、int分別是1個位元組、2個位元組、四個位元組

char*、short*、int*都為四個位元組

char**、short**、int**一樣為四個位元組,在此沒有列出,可自己試驗

總結

1.帶 * 型別的變數賦值時只能使用「完整寫法」

2.帶 * 型別的變數寬度永遠是4位元組、無論型別是什麼,無論有幾個 * .

總結:1、不帶 * 型別的變數,++或者-- ,都是加1,或者減1

2、帶 * 型別的變數,也可進行++ 或者–的操作

3、帶 * 型別的變數,++或者–時,增加(減少)的數值是減去乙個 * 後變數的寬度

總結:1、帶 * 型別的變數可以加(減)乙個整數,但不能乘或者除

2、帶 * 型別變數與其他整數相加或相減時:

(1)帶 * 型別變數 + n = 帶 * 型別變數 + n×

\times

×(去掉乙個 * 後型別的寬度)

(2)帶 * 型別變數 - n = 帶 * 型別變數 - n×

\times

×(去掉乙個 * 後型別的寬度)

上邊的本來應該試一下int* 但是short** 消去乙個 * 後的資料寬度都為4個位元組,一樣理解

總結:

1、兩個型別相同的帶 * 型別的變數可以進行減法操作(加法不能編譯成功)

2、相減的結果要除以去掉乙個 * 的資料的寬度

總結:帶 * 的型別,如果型別相同,可以做大小的比較

這是開始學習指標的開始,初學習

帶 * 的型別,所有的運算都要跟消去乙個 * 相關

本節練習:

1、char型別佔幾位元組?char*型別佔幾位元組?int*****佔幾位元組?

:都佔4個位元組

2、char** arr[10] 佔多少個位元組?

: 40個位元組

3、自定義結構體如下:

struct student

;第一步:

student**** s;

s = (student****)100;

s++; //s的值是多少?

s = s+2; //s的值是多少?

s = s-3; //s的值是多少?

s++104

s+2108

s-388

第二步:

student**** s1;

student**** s2;

int x;

s1 = (student****)200;

s2 = (student****)100;

x = s1-s2; //x的值是多少?

:25

指標學習(1)

指標是c和c 中和重要的組成部分,怎麼理解指標呢?首先來看一下記憶體 指標和變數的關係。記憶體可以比作是很多很多已經編號了的小球,你想用記憶體的時候就要知道小球的編號。比如說int i,這是乙個整型變數,占用4個位元組。如果每乙個小球就是乙個位元組的話,那麼就需要使用四個小球。變數連續的儲存在記憶體...

cpp學習 指標 1

1.int x 3 int p x 1 這一段 中int p結合順序為 int p,改為int p 則無法通過編譯。2 此處p代表乙個首位址,而下面的使用中p則代表定位到這個首位址,而int和char之類的之前的型別,則起到了確定該指標指向的變數的具體長度,譬如int為4個位元組,short為兩個位...

c和c指標學習1

初步 了解c程式結構 1用下列指令可以真正注釋掉一段不想使用的 if 0 statements endif2預處理指令 include include include define max cols 20 define max input1000預處理指令由預處理器解釋的並進行修改,修改後的指令遞交...