C/C++(指針數組)


指針數組

指針數組的本質是數組,數組指針的本質是指針
一個數組中的各個元素都是字符指針,即為字符指針數組,或者指針數組。

int arr[] = {1,2,23,45,6};//整形數組
char cArr[] = {'a','b','v','d'};//字符數組
char a,b,c,d;
char * cpArr[] = {&a,&b,&c,&d};
//<=> {char*,char*,char*,char*}字符數組指針
char *pa ="China",*pb = "America",*pc = "Canada",*pd = "Japan";
char * cppArr[] = {pa,pb,pc,pd};//放進去的是地址
//<=>
for(int i = 0;i < 4;i++) {
    printf("%p %s\n",cppArr[i],cppArr[i]);
}
char * pArr[] = {"China","Amercia","Canada","Japan"};//指針數組存放的事字符串的地址
for(int i = 0;i < 4;i++) {
    printf("%p %s\n",cppArr[i],cppArr[i]);
}//和上述輸入的結果是一樣的
/*
00404044 China
0040404A America
00404052 Canada
00404059 Japan
00404044 China
0040404A America
00404052 Canada
00404059 Japan
*/

排序:

char * pArr[] = {"China","America","Canada","Japan"};
for(int i = 0;i < 4;i++) {
    printf("%p %s\n",pArr[i],pArr[i]);
}
int n = sizeof(pArr)/sizeof(*pArr);//sizeof(pArr);總的pArr的大小,*pArr是數組首元素的大小。
char *pt;
for(int i = 0;i < n-1;i++) {
    for(int j = i+1;j < n;j++) {
        if(strcmp(pArr[i],pArr[j]) > 0) {
            pt = pArr[i];
            pArr[i] = pArr[j];
            pArr[j] = pt;
        }
    }
}
printf("\n+++++++++++++++++++++++++++++++\n");
for(int i = 0;i < 4;i++) {
    printf("%p %s\n",pArr[i],pArr[i]);
}
/*
00404044 China
0040404A America
00404052 Canada
00404059 Japan

+++++++++++++++++++++++++++++++
0040404A America
00404052 Canada
00404044 China
00404059 Japan
上述的字符串是放在data 的rodata段中,無法直接操作字符串,利用字符指針數組進行排序,將其的地址排序,實現數據的排序。相當於在圖書館里實現圖書的排序,書庫的書不動只把書的序號排序

*/

啟動進程時系統通過命令行傳遞給進程的參數,即main的參數。

int main(int argc,char * argv[]) {
//argc arg: argument(參數),c:count(個數)--參數個數
//*argv *arg:指針數組,v vector(向量)---指針數組向量
}

"0"

int   0; //0
float 0.0;//0.0
* NULL      //標識未初始化的指針,代表內存的零地址
char '\0';//用於表示字符串結束的標志

//假0
char  '0';//'0'
"0" '0'+'\0';//


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM