gpt4 book ai didi

c++ - 数组初始化函数 : Passing Array as Pointer: C++

转载 作者:行者123 更新时间:2023-11-28 02:08:41 25 4
gpt4 key购买 nike

我试图通过将数组作为指针传递给初始化函数来初始化数组。我的程序编译没有错误,但是当我运行它时;它打印出字符数并停止。

这是我目前所拥有的:

#include<iostream>
#include<cctype>
#include<string>
#include<iomanip>

using namespace std;

void initialize(int *array, int n, int value);

int main()
{
char ch;
int punctuation, whitespace, digit[10], alpha[26];

punctuation = 0, whitespace = 0;

initialize(digit, sizeof(digit)/sizeof(int), 0);
initialize(alpha, sizeof(alpha)/sizeof(int), 0);

while(cin.get(ch))
{
if(ispunct(ch))
++punctuation;
else if(isspace(ch))
++whitespace;
else if(isdigit(ch))
++digit[ch - '0'];
else if(isalpha(ch))
{
ch = toupper(ch);
++alpha[ch - 'A'];
}

if(whitespace > 0)
{
cout << "Whitespace = " << whitespace << endl;
}

if(punctuation > 0)
{
cout << "Punctuation = " << punctuation << endl;
}

cout << setfill('-') << setw(17) << '-' << setfill(' ') << endl;
cout << " Character " << " Count " << endl;
cout << setfill('-') << setw(17) << '-' << setfill(' ') << endl;


return 0;
}
}

void initialize(int *array, int n, int value)
{
int i;

for (i = 0; i < n; ++i)
{
value += array[i];
}
}

我不确定我在这里做错了什么。虽然,我对指针在传递给另一个函数后如何工作感到有点困惑。谁能解释一下?

谢谢

最佳答案

你可能想要
一)

void initialize(int *array, int n, int value)
{
int i;

for (i = 0; i < n; ++i)
{
// no: value += array[i]; but:
array[i] = value;
}
}

另见 std::fill

和 b) 将 return 0; 移出 while-loop-body

    cout << " Character " << " Count " << endl;
cout << setfill('-') << setw(17) << '-' << setfill(' ') << endl;
}
return 0;
}

编辑:关于 a)
你可以使用

std::fill(std::begin(digit), std::end(digit), 0);
std::fill(std::begin(alpha), std::end(alpha), 0);

而不是你的 initialize() 函数或(给定的上下文)

int punctuation, whitespace, digit[10]={0}, alpha[26]={0}; 

关于c++ - 数组初始化函数 : Passing Array as Pointer: C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com