指標的定義:type(資料型別)+*
不知道指標指向**時可以置為null,沒有指向固定位置的指標為野指標
指標的大小在32位平台下是4位元組,在64位平台下是8位元組
#includeint main()
對指標加減1是加減上其所指向型別的大小(指標指向的都是首位址,所以加減一是加減型別所佔位元組數)
指標的型別決定了指標向前或向後走一步有多大(距離)
#include int main()
對指標的解引用代表指標所指向的目標
指標的型別決定了對指標解引用時能有多大的許可權(能操作幾個位元組)
#includeint main()
char *p=(char *)&n;
int *p1=&n;
*p=0;
printf("p->n:%d\n",n);//char 型只佔一位元組,而n為int型四位元組,只能改變乙個位元組
*p1=0;
printf("p1->n:%d\n",n);
return 0;
}
1.指標+-整數
注意:結引用和++的優先順序
#include int main()
; int *p = &arr;
for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++)
system("pause");
return 0;
}
2.指標減(-)指標
代表兩個指標之間所經歷的元素個數(元素由指標型別決定)
//例題1:
#includeint my_strlen(char *_str)
return end-_str;
}int main()
//例題2
#includeint main()
;int *p=a;
int *q=&a[4];
printf("%d\n",q-p);//4
printf("%d\n",(double *)q-(double *)p);//2
return 0;
}
1.陣列名:(1)在sizeof中使用陣列名,此時陣列名代表整個陣列
(2)取位址時陣列名代表陣列的位址 &a
(3)除以上兩種情況外,所有的陣列名都表示陣列首元素的位址
#includeint main()
;int *p=a;
int size=sizeof(a)/sizeof(a[0]);
int i=0;
for(;ip+%d=%p\n",i,&a[i],i,p+i);//指標+1是加減上其所指向型別的大小,指標的型別決定了指標向前或向後走一步有多大的距離
}return 0;
}
#includeint main()
;int *p=a;
int sz=sizeof(a)/sizeof(a[0]);
int i=0;
for(;i二級指標-->存放一級指標的位址 (type**)(變數名)
#includeint main()
#include int main()
指標陣列是陣列,是存放指標的陣列
(陣列還是指標的評判標準是看陣列名左右兩端的操作符的優先順序誰高;讀的時候從優先順序低的開始)
eg:int *a[10] 指標陣列
int (*a)[10]陣列指標
int (*a[5])[10] 陣列指標的陣列
int ( *(*a)[5])[10] 陣列指標的陣列指標
C語言(八) 指標上
今天我們學習指標,我們現在來了解一下指標它是什麼呢?在電腦科學中,指標是程式語言中的乙個物件,利用位址,它的值直接指向存在電腦儲存器中另乙個地方的值。由於通過位址能找到所需要的變數單元,可以說位址指向該變數單元。因此將位址形象的稱為 指標 意思是通過它能找到以它為位址的記憶體單元。我們可以這麼理解 ...
C語言總結 4 指標和陣列
指標就是指標,指標變數在 32 位系統下,永遠佔 4 個 byte,其值為某乙個記憶體的位址。指標可以指向任何地方,但是不是任何地方你都能通過這個指標變數訪問到。陣列就是陣列,其大小與元素的型別和個數有關。定義陣列時必須指定其元素的型別和個數。陣列可以存任何型別的資料,但不能存函式。c 中的引用 1...
C 基礎總結 4 指標
指標是乙個變數,其儲存的值是位址,而不是值本身。有點類似於組成原理裡面的變址定址 在討論指標之前,我們先來看看如何尋找常規變數的位址。只需對變數引用取位址符 就行了。如下面一段 duck變數為int型變數,其分配的位址是1000,裡面儲存的值是12,而birding是乙個int型指標變數它本身的位址...