freeseaboy 님의 멋있어 지려 노력하는 블로그

(베이직 코스)C++ 함수 인자 뭐냐 이건 ㅋ 본문

컴퓨터 & 서버/C++

(베이직 코스)C++ 함수 인자 뭐냐 이건 ㅋ

freeseaboy 2024. 11. 22. 00:00
반응형

자 마지막 4교시 진짜 힘드네잉~~

인자에 대해서 조금 알아볼게요!1!

졸린데도 투혼으로 영상 찍어 올리니

즐감요 ㅋㅋ

바로 ㄱㄱ

스크립밑

  ★위 포스팅 내용은 네X버 Blog 아래 링크에도 

똑같이 미러링 되어 있습니다.예비 Blg ​★  

https://blog.naver.com/iwseo7114

 

iwseo7114님의 블로그 : 네이버 블로그

안녕하세요. 일상 생활 공유에 관심이 많은 샐리엇입니다. 잘부탁드려요~ㅋ

blog.naver.com

z
#include <cstdarg>
#include <iostream>
void showArg(int aNum,int* pNum,int& rNum){
    *pNum = 7;
    aNum = 7;
    rNum = 777;
}
void constArg(const int cValue,const int& cRef,
const int* cpArg,int* const paArg){
    /*
        cValue = 0;
        cRef = 0;
        cpArg = 0;
        int aaa = 10;
        paArg = &aaa;
    */
   printf("%d %d %d %d\n",cValue,cRef,*cpArg,*paArg);
    }
void arrayArg(int aArg[10]){
    int total = (sizeof(int)*10)/sizeof(int);
    for(int i=0;i<total;i++)
        printf("%d ",aArg[i]);
        printf("\n");
}
void ptrArg(int twoArg[][3]){
    for(int i=0;i<3;i++){
        for(int j=0;j<3;j++){
            printf("%d ",twoArg[i][j]);
        }
    }
}
void ptrChar(char** argv){
    for(int i=0;i<=1;i++){
        printf("\n%s\n",argv[i]);
    }
}
void showArgs(short count,...){
    int result = 0;
    va_list args;
    va_start(args,count);
    for(int i=0;i<count;++i){
        //result += va_arg(args,int);
        if(i==0)
            continue;
        printf("%d ",result = va_arg(args,int));
    }
    printf("%d\n",result);
    va_end(args);
}
int main(int argc,char** argv){
    short sNum = 3;
    showArgs(3,sNum,123,35);
    for(int i=1;i<argc;i++){
        printf("%s ",argv[i]);
    }
    char* twoString[2] = {"Hellow","world"};
    ptrChar(twoString);
    int twoArray[][3] = {{1,1,1},{2,2,2},{3,3,3}};
    int array[10] = {0,};
    ptrArg(twoArray);
    arrayArg(array);
    int* pNum;
    int* ppNum = NULL;
    int tempNum,iNum,tempNumA;
    int& rNum = tempNumA;
    tempNum = 11;
    tempNumA = 0x00;
    pNum = &tempNum;
    ppNum = &tempNumA;
    iNum = 10;
    printf("%d %d %d\n",*pNum,iNum,rNum);
    showArg(iNum,pNum,rNum);
    printf("%d %d %d\n",*pNum,iNum,rNum);
    constArg(iNum,rNum,pNum,ppNum);
    return 0;
}

################################################################

자 안녕하세요 오늘 4교시 마지막 C++시간입니다

저번에 한거 이후로 또 이어 진행을 해볼게요

무튼 재밌게 봐주던지 말던지 그건 알아요..

노래 한곡 ㄱ

인자전달

한마디로 값이면 복사 주소를 원하는 참조자면 말그대로 그 참조자 고대로..

즉 인자로 일반 변수는 값변경이 안되고있죠?

근데 참조 변수는 값변경이 잘되죠???

즉 이말이에요 저자가 설명하는건

레퍼,포인터 다바뀜 나머지 다안바뀜 이거임.

보통 참조자는 왜 쓰는지 이해가 안갈수있어요

왜냐면 단순히 값 변경이면 포인터도 있지 않냐?그럴텐데

이건 하수적인 생각이고

보통 아까 말했다 싶이 값만 넘겨서 사용할꺼면 포인터 안쓰고

일반 변수 써도 되요 근데 문제는 크기가 커지면 복사 비용이

어마 무시해지겠죠?그래서 고안해 낸게 레퍼에요

이게 진짜 만든 이유에요 즉 레퍼는 복사를 안하면서

값 변경도 되거나 안되게 할수 있기에 쓰는거에요

주목적이

맞나요?

ㅇㅋ?

이제 const로 다시 시험을 해볼게요

2차원 배열이 고정이랑

포인터 배열이랑 해깔리지마세요..

그리고 main인자로 받는것도 있어요..

그것도 보여드릴게요..

가변인자로 받아보자

이것도 쉬워요...

자 오늘 고생 많았어요..

점점 복잡하고 어지럽죠?

근데 이건 진짜 기초에요...심화도 아니고

기본 약간 아주 약간 응용도 안했어요...ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

C++이 졸라 무섭고어렵습니다

20년배우고 2시간 써먹는게 C++이고

2시간 배우고 20년 써먹는게 C언어 입니다

맞나요?

수고링~

################################################################

c++

 

반응형