指针基础及实例
指針基礎(chǔ)
指針(變量)是C/C++支持的一種變量。指針變量的值是一個(gè)地址,該地址是一個(gè)16進(jìn)制的數(shù)。指針變量指向該地址所對(duì)應(yīng)的變量。
指針聲明
//*號(hào)表示指針變量。**號(hào)表示二級(jí)指針(指向指針的指針),只有由它聲明的變量可以指向指針變量。 //type包括C++基本數(shù)據(jù)類型及自定義類型type *variable_name;eg:int *p;int *a[5];char *ptr;int **pp;指針定義
//指針的值是變量在內(nèi)存里的地址,一個(gè)16進(jìn)制的數(shù) int *ptr; int a; ptr=&a;//把int型變量a的地址賦給ptr int **pp=&ptr//把int *型變量ptr的地址賦給pp實(shí)例(代碼已調(diào)試)
訪問單獨(dú)變量
#include <iostream> using namespace std; int main() {//聲明一個(gè)int型指針變量//如果指針沒有初始值,可以將NULL(值為0)賦給它,避免后續(xù)使用未初始化的指針 int *ptr=NULL;//聲明二級(jí)指針int **pp=&ptr;cout<<"ptr:\t"<<ptr<<endl;//指針不可指向內(nèi)存地址為0的區(qū)域,此區(qū)域?yàn)橄到y(tǒng)保留,屬非法操作 //cout<<"*ptr:\t"<<*ptr<<endl;int a=100;ptr=&a;cout<<"ptr:\t"<<ptr<<endl;cout<<"*pp:\t"<<*pp<<endl;cout<<"**pp:\t"<<**pp<<endl;cout<<"*ptr:\t"<<*ptr<<endl;cout<<"*&a:\t"<<*(&a)<<endl;cout<<"a:\t"<<a<<endl;*ptr=101;cout<<"**pp:\t"<<**pp<<endl;cout<<"*ptr:\t"<<*ptr<<endl;cout<<"*&a:\t"<<*(&a)<<endl;cout<<"a:\t"<<a<<endl;return 0; }訪問數(shù)組
#include <iostream> using namespace std; int main() {//指針訪問數(shù)組 int i,a[5]={10,20,30,40,50};//讓指針ptr指向數(shù)組首地址 int *ptr=a;cout<<"*ptr:\t"<<*ptr<<endl;for(i=0;i<5;i++){//i自增1,ptr+i移動(dòng)4個(gè)字節(jié),剛好指向下一個(gè)數(shù)組成員 cout<<"ptr + "<<i<<" 的地址:\t"<<ptr+i<<endl;cout<<"10 * ptr["<<i<<"] = "<<10*(*(ptr+i))<<endl;}return 0; }指針數(shù)組訪問整型數(shù)組
#include <iostream> using namespace std; int main() {//指針數(shù)組訪問整型數(shù)組 int *ptr3[5],i,b[5]={0,1,2,3,4};for(i=0;i<5;i++){ptr3[i]=&b[i];cout<<"10 * ptr3["<<i<<"] = "<<10*(*ptr3[i])<<endl;} return 0; }指針數(shù)組訪問字符串?dāng)?shù)組
#include <iostream> using namespace std; int main() {//指針數(shù)組訪問字符串?dāng)?shù)組 const char *names[4] = {"Zhangsan","Lisi","Wangwu","Chenliu"};int i; for (i = 0; i < 4; i++){cout << "Value of names[" << i << "] = ";cout << *names[i] << endl;}cout<<endl;for (i = 0; i < 4; i++){cout << "Value of names[" << i << "] = ";cout << names[i] << endl;}return 0; }指針作為函數(shù)參數(shù)
#include <iostream> using namespace std; //指針調(diào)用 void Swap(int *a,int *b) {int temp=*a;*a=*b;*b=temp; } int main(int argc, char** argv){int a=10,b=20;cout<<"交換前:\t"<<a<<"\t"<<b<<"\n";Swap(&a,&b); cout<<"交換后:\t"<<a<<"\t"<<b<<"\n";return 0; }指針作為函數(shù)返回值
#include <iostream> using namespace std; int * get_half() {int i;//a必須聲明為靜態(tài)變量 static int a[10];for(i=0;i<10;i++){a[i]=i/2;cout<<a[i]<<" ";}cout<<endl;return a; } int main() {int *p,i;p=get_half();cout<<endl;for(i=0;i<10;i++){cout<<*(p+i)<<" ";}cout<<endl;return 0; }總結(jié)
- 上一篇: 安卓平板推荐(安卓哪个平板)
- 下一篇: 日本linux用户比例(日本linux)