몽상실현개발주의

[따배씨] 10.10 const 와 배열과 포인터 본문

Language/C

[따배씨] 10.10 const 와 배열과 포인터

migrationArc 2021. 6. 6. 23:31

[따배씨] 10.10 const 와 배열과 포인터

따배씨 - 따라하며 배우는 C언어

10강 배열과 포인터

10.10 const 와 배열과 포인터

#include <stdio.h>

int main(){
    // type qualifiers : constm volatile, ...
    
    const double arr2[3] = {1.0, 2.0, 3.0};
    
    const double* pd = arr2;
    
    *pd = 3.0;
    // pd[0] = 3.0; arr2[0] = 3.0;
  
    pd[2] = 1024.0;
    // arr2[2] = 1024.0;

    printf("%f %f\n", pd[2], arr2[2]);
    
    return 0;
}
const double arr2[3] = {1.0, 2.0, 3.0};
couble* pd = arr2;
  • const로 서언한 배열을 pointer로 접근하여 수정 가능하기 때문에 권장하지 않음
  • Warning

 

 

#include <stdio.h>

int main(){
    // type qualifiers : constm volatile, ...
    
    const double arr2[3] = {1.0, 2.0, 3.0};
    const double* pd = arr2;
    
    pd++;
  
    printf("%f %f\n", pd[2], arr2[2]);
    // 쓰레기값 3.000000
    
    return 0;
}
const double arr2[3] = {1.0, 2.0, 3.0};
const double* pd = arr2;
  • const 로 선언한 배열의 pointer 도 const로 선언 해 주는게 좋음
pd++;
printf("%f %f\n", pd[2], arr2[2]);
  • pd 를 const 로 선언 하였지만, 저장된 주소 값은 변경 가능
const double * const pd = arr2
  • const 를 한번더 사용하면 주소값도 변경 불가능
pd++
  • pd 에 저장된 주소값이 arr[1] 로 증가
  • pd[2] == arr[3], arr[3]은 배열의 범위가 넘어가므로 쓰레기값 출력

 

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

 

 

Comments