사용자가 입력 한 요소 수를 할당하고 사용자가 입력 한 값을 할당 한 다음 C++ 프로그램으로 직접 입력 할 수 있습니까? pointer arithmetic을 사용하지 않고 방금 할당 된 요소? 저는 인간의 두뇌가 "일곱 번째 요소가 첫 번째 요소의 주소 + 앞으로의 6 단계"라고 생각하지 않기 때문에 이것을 묻습니다. 동적으로 생성 된 요소와 현재의 속성 집합을 절대적으로 바인딩 할 수 있습니다. 이것이 C++에서 가능하다면 자연스럽게 프로그램 실행을 가속화 할 것입니다.포인터 연산이없는 동적 길이 요소의 요소를 직접 가리 키십시오.
예제 코드는 내가 말하는 겁니다 무엇인지 명확히 :
//
// main.cpp
// This code doesn't compile
// but it's for clarification purposes
// Created by Måns Nilsson on 2017-01-02.
// Copyright © 2017 Måns Nilsson. All rights reserved.
//
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
int currval;
int otherval;
int arrlength;
cout<<"How many elements would you like to allocate?"<<endl<<"Your input: ";
cin >> arrlength;
int numlist[arrlength];
//User inputs the element values and variables are assigned to
//point directly to each element
for(int i=0;i<arrlength;i++) {
cout<<"Enter a value for element "<<(i + 1)<<": ";
cin >> currval;
numlist[i] = currval;
int &var(i) = numlist[i];
}
cout<<"Enter the index of the element you want to modify: ";
cin >> currval;
cout<<"Enter a new value for element "<<currval<<": ";
cin >> otherval;
var(currval-1) = otherval;
return 0;
}
* "C++에서 가능하다면 자연스럽게 프로그램 실행 속도가 빨라집니다."* 응? 왜 그렇게 생각하니? –
나는 그 질문을 이해하고 있는지 확신 할 수 없다. 'int * arr = new int [someSize];'라고하면,'arr [7]'을 쓸 수 있습니다 - 이것은'* (arr + 7)'과 정확히 같은 의미입니다. 다시 문제는 무엇입니까? –
첫 번째 요소의 주소에서 시작하여 6을 추가하면 7 번째 요소의 주소 인 * (arr + 6)이됩니다. 그러나 요소 주소를 직접 알기 위해 동적으로 새 변수를 만들 수는 없습니다. 여전히 포인터 연산을 사용합니다. –