日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

利用指针打印数组

發布時間:2023/11/27 生活经验 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用指针打印数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
#include<iostream>
#include<typeinfo>
#include<vector>
#include<algorithm>
using namespace std;int main()
{int arr[] = { 1,2,3,4,5,6,7 };int* p = arr;//指針p是指向數組的首元素地址cout << *(p + 4) << endl;//指針是指向數組第5個元素的地址for (int i = 0; i < 7; i++){cout << *p << endl;p++;//地址增加4個字節,指向數組的下一個元素}return 0;
}

注意:

1、指針“++”詳解

int main()
{
?? ?int arr[] = { 1,2,3,4,5,6,7 };
?? ?int* p = arr;//指針p是指向數組的首元素地址

?? ?cout << *p++ << endl;//指針是指向數組首元素地址,因為先*p再++

?? ?cout << *p << endl;//因為上面地址+1,所以指針是指向數組第二個元素的地址

?? ?return 0;
}

2、指針之間可以相減(相減的結果是位置相減的結果

int main()
{
?? ?int arr[] = { 9,2,5,8 };
?? ?int* p = arr+3;
?? ?cout << p-arr << endl;//結果為3
?? ?system("pause");
?? ?return 0;
}

示例:兩個有序數組的合并

在確定一個數組大小的時候我們一般用sizeof

1

2

3

int?arr1[] = {1 , 2, 4 ,5};

int?arr1_len =?sizeof?arr1/sizeof(int);

std::cout<<?"arr1 len: "?<< arr1_len << std::endl;

但是如果數組是函數的一個參數,我們就要把數組的大小也做為參數傳入,換個方式說就是,如果數組做為參數,在函數內我們就不能使用sizeof來計算數組的大小?例:

1

int?sum(int?arr[],?int?len)

參數int arr[] 中括號為空表明可以傳入任意長度的數組給函數。但是參數arr[]并不是數組,而是一個指針,但我們可以當作數組來使用。

一般情況下,數組名就是指針,c++將數組名解析為第一個元素的地址:

1

arr == &arr[0]

#include<iostream>
#include<typeinfo>
#include<vector>
#include<algorithm>
using namespace std;int* merge_array(int arr1[],int len1, int arr2[], int len2)
{//數組做為參數,在函數內我們就不能使用sizeof來計算數組的大小/*int len1 = sizeof(arr1) / sizeof(arr1[0]);int len2 = sizeof(arr2) / sizeof(arr2[0]);*/int* p1 = arr1;//指針p1是指向數組的首元素地址int* p2 = arr2;//指針p2是指向數組的首元素地址int len = len1 + len2;int *arr = new int[len];//合并后的新表int* p = arr;int *p1_last = (p1 + len1 - 1);//p1_last是指向數組的最后一個元素地址int *p2_last = (p2 + len2 - 1);//p2_last是指向數組的最后一個元素地址while (p1 <= p1_last && p2 <= p2_last){if (*p1 < *p2){*p++ = *p1++;}else{*p++ = *p2++;}}while (p1 <= p1_last){*p++ = *p1++;}while (p2 <= p2_last){*p++ = *p2++;}return arr;
}int main()
{int arr1[3] = { 1,7,8 };int arr2[6] = { 2,4,6,8,10,11 };int len1 = sizeof(arr1) / sizeof(arr1[0]);int len2 = sizeof(arr2) / sizeof(arr2[0]);int *arr=merge_array(arr1,len1, arr2,len2);int len = len1 + len2;for (int i = 0; i < len; i++){cout << *arr << endl;arr++;}return 0;
}

總結

以上是生活随笔為你收集整理的利用指针打印数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。