1. 程式人生 > >C 指標總結

C 指標總結

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!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=3int 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"; // 分配區域性陣列
           

給我老師的人工智慧教程打call!http://blog.csdn.net/jiangjunshow

這裡寫圖片描述