可以把指標理解為一種新資料型別,下面從七個方面來說明這種」帶*型別」的新資料型別特徵
1、寬度
1)新型別變數寬度永遠是4位元組,無論型別是什麼,無論有幾個*
2、宣告
例子
1)char* x; char型別加*的構成乙個新型別
2)short* y; short型別加*的構成乙個新型別
3)student* st; 結構體型別加*的構成乙個新型別
4)char*** x; char型別加***的構成乙個新型別
總結
1)新資料型別的標準寫法,變數型別* 變數名
2)任何型別都可以帶*構成是一種新的資料型別
3)*可以是任意多個
3、賦值
例子
1)整型賦值
int x;
x=(int)10; 完整寫法
x=10; 簡化寫法
2)帶*型別賦值
char* x;
short* y;
int* z;
char******* h;
x = (char*)1;
y = (short*)2;
z = (int *)3;
h = (char*******)4;
總結
1)帶*型別的變數賦值時只能使用」完整寫法」
4、加加 減減
例子
1)
char* a;
short* b;
int* c;
a = (char*)100;
b = (short*)100;
c = (int*)100;
a++;
b++;
c++;
//101 102 104
printf("%d %d %d", a, b, c);
2) char*** a;
short*** b;
int*** c;
a = (char***)100;
b = (short***)100;
c = (int***)100;
a++;
b++;
c++;
//104 104 104
printf("%d %d %d", a, b, c);
總結
1)帶*型別的變數可以加加 或減減
2)帶*型別的變數做加加 或減減時,
新資料型別變數加加 = 新資料型別變數 + (去掉乙個*後型別的寬度)
新資料型別變數減減= 新資料型別變數 - (去掉乙個*後型別的寬度)
5、加上/減去 乙個整數
例子
1)
char* a;
short* b;
int* c;
a = (char*)100;
b = (short*)100;
c = (int*)100;
a = a + 5;
b = b + 5;
c = c + 5;
//105 110 120
printf("%d %d %d", a, b, c);
2)
char*** a;
short*** b;
int*** c;
a = (char***)100;
b = (short***)100;
c = (int***)100;
a = a + 5;
b = b + 5;
c = c + 5;
//120 120 120
printf("%d %d %d", a, b, c);
3) char* a;
short* b;
int* c;
a = (char*)100;
b = (short*)100;
c = (int*)100;
a = a - 5;
b = b - 5;
c = c - 5;
//95 90 80
printf("%d %d %d", a, b, c);
4) char*** a;
short*** b;
int*** c;
a = (char***)100;
b = (short***)100;
c = (int***)100;
a = a - 5;
b = b - 5;
c = c - 5;
//80 80 80
printf("%d %d %d", a, b, c);
總結
1)帶*型別的變數可以加、減乙個整數,但是不能乘或除
2)帶*型別的變數與其他整數相加或相減時,
新資料型別變數 + n = 新資料型別變數 + n乘以去掉乙個*後型別的寬度
新資料型別變數 - n = 新資料型別變數 - n乘以去掉乙個*後型別的寬度
6、求差值
例子
1)
char* a;
char* b;
a = (char*) 100;
b = (char*) 200;
int x = b - a;
//x = 100;
printf("%d\n", x);
2) char** a;
char** b;
a = (char**) 100;
b = (char**) 200;
int x = b - a;
//x = 25;
printf("%d\n", x);
總結
1)兩個型別完全相同的帶*型別的變數可以進行減法操作
2)相減的結果要除以去掉乙個*的資料的寬度
7、比較
例子
1)
char*** a;
char*** b;
a = (char***)200;
b = (char***)100;
if(a>b)
else
總結
1)帶*的變數,如果型別完全相同,可以做大小的比較
C 指標的學習理解
指標是乙個記憶體位址,而位址是整數,但指標不是整數。指標變數一般沒有 除非是指向指標的指標。指標變數前的操作符 生成它所指向的變數。指標變數的值是指標所指向變數的記憶體位址 和 指標變數 的記憶體位址相同 指標變數 的值就是指標所指向變數的值,通過改變 指標變數 的值可以操作所指向變數的值。如果把乙...
對於指標學習的理解
在最近的一段時間裡,我c語言的學習也即將接近尾聲,在這裡我想對指標的學習寫下自己的一點看法和理解,不夠全面也不是完全正確,但我希望這作為我對這段時間學習的一次總結。指標的概述 指標是一種變數型別,它與普通變數不同的是,指標裡存的是位址,指向另一變數,起到索引的作用。我所理解的指標具備三要素 1.指標...
陣列,指標陣列,陣列指標的學習理解
本文將以如下定義的陣列及指標為例,對陣列,指標陣列,陣列指標進行說明。這是看完書後總結的,所謂好記性,不然爛部落格,想將這些總結記下,以便需要時進行重溫。如有理解上的錯誤,望大家指出。int a 3 3 int p0 3 int p1 4 int p3 int p4 1 二維陣列 a 二維陣列名 a...