我并不真正了解指標以及如何呼叫和創建動態陣列,盡管我花時間對它們進行自我教育,并且我在以下行中遇到了錯誤:
char *dArray = alphabet(N);
這是我的指示和我想要做的事情:
- 該程式首先要求用戶輸入陣列的元素數。我們稱這個數字為 N。
- 然后它創建一個大小為 N 1 的動態陣列,其中包含 'a' 和 'z' 之間的 N 個隨機小寫字母。確保最后一個元素是空字符“\0”。– 這里,確保使用動態記憶體分配(使用 new 命令)為陣列分配記憶體空間,這正是我們稱之為動態陣列的原因。
- 創建陣列后,程式會顯示整個陣列。
#include <stdio.h>
#include <iostream>
#include <algorithm> // for std::find
#include <iterator> // for std::begin, std::end
#include <ctime>
using namespace std;
char alphabet(int N)
{
char *dArray;
dArray= new char[N 1];
dArray[N]= '\0';
int i;
srand(time(NULL));
for (i=0; i<N; i )
{
int r = rand()%26;
char letter='a' r;
cout<<"dArray["<<i<<"] is: "<< letter<<endl;
dArray[i]= letter;
}
return *dArray;
}
int main()
{
int arrayN;
int N;
printf("enter the number of elements: ");
cin >> N;
char *dArray = alphabet(N);
for (int i=0; i<=N; i )
{
cout<<"dArray["<<i<<"] "<<dArray[i]<<endl;
}
}
uj5u.com熱心網友回復:
您已宣告回傳型別錯誤。它應該是char *
char *alphabet(int N) // <<<<====
{
char *dArray;
dArray= new char[N 1];
dArray[N]= '\0';
int i;
srand(time(NULL));
for (i=0; i<N; i )
{
int r = rand()%26;
char letter='a' r;
cout<<"dArray["<<i<<"] is: "<< letter<<endl;
dArray[i]= letter;
}
return dArray; // <<<<<<=====
}
但更好的是std::string或std::vector<char>
uj5u.com熱心網友回復:
您應該避免原始擁有指標,并且更喜歡std::string.
使用 std,您可能會執行以下操作:
std::string random_letters(std::size_t N, std::mt19937& rnd)
{
std::string res(N, '\0');
const char alphabet[] = "abcdefghijklmnopqrstuvwxyz";
std::uniform_int_distribution<int> dist(0, 25);
std::generate(res.begin(), res.end(), [&](){ return alphabet[dist(rnd)]; });
return res;
}
演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/494234.html
