C 指標總結
阿新 • • 發佈:2018-11-07
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow
也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!
指標是什麼?
指標是一變數或函式的記憶體地址,是一個無符號整數,它是以系統定址範圍為取值範圍,32位,4位元組。指標變數:
存放地址的變數。在C++中,指標變數只有有了明確的指向才有意義。指標型別
int*ptr; // 指向int型別的指標變數char*ptr;float*ptr;
指標的指標:
char*a[]={"hello","the","world"};char**p=a;p++;cout<<*p<<endl; // 輸出the
函式指標:
指向某一函式的指標,可以通過呼叫該指標來呼叫函式。例子:
#include <stdio.h>#include <io.h>#include <stdlib.h>#include <iostream>using namespace std;int max(int a, int b){ return a>b?a:b;}int main(int argc, char* argv[]){ int a=2,b=6,c=3; int max(int, int); int (*f)(int, int)=&max; cout<<(*f)((*f)(a,b),c); return 0;}// Output:/*6*/
指標陣列:
指向某一種型別的一組指標(每個陣列變數裡面存放的是地址)int* ptr[10];
陣列指標:
指向某一型別陣列的一個指標int v[2][10]={{1,2,3,4,5,6,7,8,9,10},{11,12,13,14,15,16,17,18,19,20}};int (*a)[10]=v; // 陣列指標cout<<**a<<endl; // 輸出1cout<<**(a+1)<<endl; // 輸出11cout<<*(*a+1)<<endl; // 輸出2cout<<*(a[0]+1)<<endl; // 輸出2cout<<*(a[1]+1)<<endl; // 輸出12cout<<a[0]<<endl; // 輸出v[0]首地址cout<<a[1]<<endl; // 輸出v[1]首地址
int* p與(int*) p的區別
int* p; // p是指向整形的指標變數(int*) p; // 將p型別強制轉換為指向整形的指標
陣列名相當於指標,&陣列名相當於雙指標
char* str="helloworld"與char str[]="helloworld"的區別
char* str="helloworld"; // 分配全域性陣列,共享儲存區char str[]="helloworld"; // 分配區域性陣列