Rust - Array

Mickey·2022년 1월 13일
0

Rust

목록 보기
14/32
post-thumbnail
post-custom-banner

https://www.tutorialspoint.com/rust/rust_array.htm

변수에는 다음과 같은 제약 사항이 있음

  • 변수는 본질적으로 스칼라
  • 변수 선언은 한 번에 하나의 값만 포함
  • 프로그램에 n개의 값을 저장하려면 n개의 변가 선언이 필요
  • 프로그램에서 변수는 임의의 순서로 메모리가 할당되므로 선언된 순서대로 값을 검색/읽기가 어려움

배열은 동일한 데이터 형식의 값 모음

배열의 기능

  • 배열 선언은 순차적 메모리 블록을 할당
  • 배열은 정적이므로 초기화된 배열의 크기는 변경 불가
  • 각 메모리 블록은 배열 요소를 나타냄
  • 배열 요소는 요소의 인덱스라고 하는 고유 정수로 식별
  • 배열 요소를 채우는 것을 배열 초기화라고 함
  • 배열 요소 값은 업데이트하거나 수정할 수 있지만 삭제할 수는 없음

배열 선언 및 초기화

//Syntax1
let variable_name = [value1,value2,value3];

//Syntax2
let variable_name:[dataType;size] = [value1,value2,value3];

//Syntax3
let variable_name:[dataType;size] = [default_value_for_elements;size];

단순 배열

fn main(){
   let arr:[i32;4] = [10,20,30,40];
   println!("array is {:?}",arr);
   println!("array size is :{}",arr.len());
}

데이터 형식이 없는 배열

fn main(){
   let arr = [10,20,30,40];
   println!("array is {:?}",arr);
   println!("array size is :{}",arr.len());
}

기본값

fn main() {
   let arr:[i32;4] = [-1;4];
   println!("array is {:?}",arr);
   println!("array size is :{}",arr.len());
}

배열 사용 for loop

fn main(){
   let arr:[i32;4] = [10,20,30,40];
   println!("array is {:?}",arr);
   println!("array size is :{}",arr.len());

   for index in 0..4 {
      println!("index is: {} & value is : {}",index,arr[index]);
   }
}

iter() 함수 사용

iter() 함수는 배열에 있는 모든 요소의 값을 가져옴

fn main(){

let arr:[i32;4] = [10,20,30,40];
   println!("array is {:?}",arr);
   println!("array size is :{}",arr.len());

   for val in arr.iter(){
      println!("value is :{}",val);
   }
}

배열 수정

mut 키워드는 가변 배열을 선언하는 데 사용
가변 배열을 선언하고 두 번째 배열 요소의 값을 수정

fn main(){
   let mut arr:[i32;4] = [10,20,30,40];
   arr[1] = 0;
   println!("{:?}",arr);
}

함수에 매개변수로 배열 전달

Pass by value

fn main() {
   let arr = [10,20,30];
   update(arr);

   print!("Inside main {:?}",arr);
}
fn update(mut arr:[i32;3]){
   for i in 0..3 {
      arr[i] = 0;
   }
   println!("Inside update {:?}",arr);
}

Pass by reference

fn main() {
   let mut arr = [10,20,30];
   update(&mut arr);
   print!("Inside main {:?}",arr);
}
fn update(arr:&mut [i32;3]){
   for i in 0..3 {
      arr[i] = 0;
   }
   println!("Inside update {:?}",arr);
}

배열 선언 및 상수

fn main() {
   let N: usize = 20;
   let arr = [0; N]; //Error: non-constant used with constant
   print!("{}",arr[10])
}

컴파일 타임에 배열의 길이를 알아야 하므로 에러 발생

아래 코드는 유효
const 키워드가 접두사로 붙은 식별자 값은 컴파일 시 정의되며 런타임 시 변경할 수 없음
usize는 포인터 크기이므로 실제 크기는 프로그램을 컴파일하는 아키텍처에 따라 다름

fn main() {
   const N: usize = 20; 
   // pointer sized
   let arr = [0; N];

   print!("{}",arr[10])
}

profile
Mickey
post-custom-banner

0개의 댓글