数组作为形参时的一个陷阱
生活随笔
收集整理的這篇文章主要介紹了
数组作为形参时的一个陷阱
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.#include <iostream>
using namespace std;
//交換兩個(gè)值
void swap(int &a, int &b) {int temp = 0;temp = a;a = b;b = temp;
}
//把數(shù)組中元素為奇數(shù)的放左邊,偶數(shù)放有右邊。
//此處引發(fā)了我對(duì)C++ primer中關(guān)于對(duì)數(shù)組作為形參時(shí),函數(shù)的定義為什么要用一個(gè)int值作為下標(biāo)變量,如果時(shí)候別的方法計(jì)算數(shù)組長(zhǎng)度會(huì)如何,我想到了sizeof
void arr(int a[],int n) {int begin = 0;int end = n - 1;
//end=sizeof(a)/sizeof(a[0])-1;? 錯(cuò)誤:sizeof(a)/sizeof(a[0])的結(jié)果為1while (begin<end){while(a[begin] % 2 == 1 && begin < end)begin++;while(a[end] % 2 == 0 && begin < end)end--;swap(a[begin], a[end]);} } int main() {int ar[8] = { 1,2,3,4,5,6,7,8 };arr(ar,8);for (int i = 0; i != 8; i++) {cout << ar[i] << " ";}return 0; }
//此處引發(fā)了我對(duì)C++ primer中關(guān)于對(duì)數(shù)組作為形參時(shí),函數(shù)的定義為什么要用一個(gè)int值作為下標(biāo)變量,如果時(shí)候別的方法計(jì)算數(shù)組長(zhǎng)度會(huì)如何,我想到了sizeof
void arr(int a[],int n) {int begin = 0;int end = n - 1;
//end=sizeof(a)/sizeof(a[0])-1;? 錯(cuò)誤:sizeof(a)/sizeof(a[0])的結(jié)果為1while (begin<end){while(a[begin] % 2 == 1 && begin < end)begin++;while(a[end] % 2 == 0 && begin < end)end--;swap(a[begin], a[end]);} } int main() {int ar[8] = { 1,2,3,4,5,6,7,8 };arr(ar,8);for (int i = 0; i != 8; i++) {cout << ar[i] << " ";}return 0; }
此例中,我曾試著在數(shù)組當(dāng)形參的函數(shù)中使用sizeof來(lái)計(jì)算實(shí)參數(shù)組的大小。但是當(dāng)數(shù)組作為形參的時(shí)候,其退化為一個(gè)指針,如果sizeof其數(shù)組名將計(jì)算的是一個(gè)指針的大小!
?
轉(zhuǎn)載于:https://www.cnblogs.com/Royzzzzz/p/10574170.html
總結(jié)
以上是生活随笔為你收集整理的数组作为形参时的一个陷阱的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mssql sqlserver 对不同群
- 下一篇: 洛谷P2698 [USACO12MAR]