注:對於乙個變數來說,最重要的乙個特徵就是資料的寬度。
推薦不推薦
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預處理指令由預處理器解釋的並進行修改,修改後的指令遞交...