게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[본삭금]C 구조체 관련 질문입니다.
게시물ID : programmer_6929짧은주소 복사하기
작성자 : 에이머
추천 : 0
조회수 : 335회
댓글수 : 1개
등록시간 : 2014/12/04 21:07:46
옵션
  • 본인삭제금지
C 공부한지 너무 오래되서 헷갈리네요..

call by value와 call by reference에 관한겁니다.

예를 들어

struct gujo{
int a;
int b;
}
void testFunction(struct gujo table[]);

int main(int argc, char *argv[]){
int i;
struct gujo origin[10];
testFunction(origin);
for(i=0;i<10;i++)
printf("%d \t %d\n",origin[i].a, origin[i].b);
return 0;
}

void testFunction(struct gujo table[]){
int i, j;
struct gujo temp;
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
temp = table[i];
table[j]=table[i];
table[j]=temp;
}
}
}

이런 형식의 코드를 작성하였습니다.

제가 궁금한거는 main에서 testFunction을 호출할때 call-by-value 형식으로 호출되는걸로 보이는대요
testFunction에서는  table로 받아서 치환하기 때문에 table에 복사된 상태로 변경되면 origin에는 영향이 없어야 되지 않나요?
실제로 코드를 실행해보면 origin의 순서가 바뀌어 있는데...
이런 경우에는 포인터 형식이 아니어도 call-by-reference형식으로 되는건가요?

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호