簡單來說指標是變數的位址,在程式執行的時候直接呼叫函式或者變數的名稱不太方便,而呼叫這個函式或者變數的位址,對位址指向的函式或者變數進行操作能取到意想不到的效果。這也正是指標的意義。
c\c++中指標的定義: 型別名稱 *指標名稱
例如:
int *p;
char *pc;
使用指標的某些時候能夠做到不用指標的事,比如呼叫函式交換兩個變數的值。
void swap( int p,int q)
指標代表的是變數的位址,其中也可以進行運算。
1、兩個同型別的指標變數可以比較大小;
比較大小的意思就是判斷這兩個指標指向的變數的位址的大小。
2、兩個同型別的指標變數可以進行相減;
p1-p2=(位址1-位址2)/sizeof(t);
3、指標變數可以和整數型別的變數/常量相加減。
表示式 p+n 代表了位址p+n×sizeof(t)
4、指標變數可以自增自減。
t array[5];
中array的型別就是t* ,代表了array[5]這個陣列的位址
t *p=array;
array[i] 與 *(p+i) p[i]等價
下面的演算法是氣泡排序法。
#include#include#define num 10
void bubblesort(int *pa,int num)
}void main()
{ int an[num];
for(int i=0;ivoid的意思就是「無型別」,void指標則為「無型別指標」,void指標可以指向任何型別的資料。
所以void指標一般被稱為通用指標或者泛指針,或者叫做萬能指標
void指標一般用來記憶體的複製。
比如 memcpy(pa,pb,6) 將pb的前六個位元組賦值給pa
void *memcpy(void *dest,const void *src,unsigned int n)
一般來說,void * 型別的指標可以指向任何乙個型別的指標。如果打算去獲取它所指向的變數值時候,需要先將void指標強制型別轉換成和變數名型別相匹配的資料型別指標後再進行操作;
void *dest;
char *pdest=(char *)dest;
但是只是賦予void*型別指標指向變數值 的時候,就直接操作就可以了。
void *dest;
char *pdest='c';
*dest=*pdest;
我的創新成長之路(二)
大二年是我成長的一年,在這一年中我成長了許多,在這一年中,我得極力感謝07級學長們,還有08級部分同僚們。就這樣我成了創新 電子設計部的一員。進部之後,我才了解到我的進部跟兩個人有很大的關係,這個兩個人是普哥 王重普學長 和濤哥 帖濤 面試的時候。普哥問了我很多的問題,其中大部分關於智慧型車的 電磁...
Nginx學習成長之路 二
nginx的反向 與負載均衡 1.什麼是反向 例如 a b 無法到達 但是c b 那麼我們可以從a c b 那麼 c 就是連線的點 也就是 伺服器 這種稱作正向 當我們有乙個伺服器集中,並且伺服器集群中的每台伺服器的內容一樣的時候,同樣我們要從個人電腦訪問到伺服器集中的伺服器的時候無法訪問,且此時第...
python使用者登入程式檢驗 小白成長之路
需求 1.實現使用者輸入使用者名稱 密碼的驗證。2.當使用者輸入同乙個使用者名稱超過三次退出程式。實現思路 先將正確的使用者名稱,密碼存入本地 現在只是乙個值,以後可以存到資料庫,然後匹配驗證 使用者輸入的使用者名稱存入字典。然後驗證輸入的使用者名稱是否和本地使用者名相同。如果相同,去判斷密碼是否一...