정수 배열의 요소 (전체 배열이 아닌) 만 함수로 전달하면 값 또는 참조로 전달됩니까? 예 -배열에서 배열을 함수로 전달
arr[]={2,3,4,5,6}
ans=fun(arr[2])
과 재미
내가 [2] 메인 함수 나중에, 언 인쇄하면 그때 8 또는 4로 ANS를 얻을 것이다, (2)에 의해 임의의 값을 승산 일부 기능인가? 어떤 도움을 주시면 감사하겠습니다.
정수 배열의 요소 (전체 배열이 아닌) 만 함수로 전달하면 값 또는 참조로 전달됩니까? 예 -배열에서 배열을 함수로 전달
arr[]={2,3,4,5,6}
ans=fun(arr[2])
과 재미
내가 [2] 메인 함수 나중에, 언 인쇄하면 그때 8 또는 4로 ANS를 얻을 것이다, (2)에 의해 임의의 값을 승산 일부 기능인가? 어떤 도움을 주시면 감사하겠습니다.
C에는 참조가 없습니다.
int fun(int a) {
a = 0;
}
int main() {
int arr[5] = {2, 3, 4, 5, 6};
fun(arr[2]);
printf("%d\n", arr[2]); //prints 4
return 0;
}
당신은 포인터을 (여전히 값으로 함수에 전달하지만, 그 값은 당신이 관심있는 값의 주소) 전달할 수 있습니다.
int fun(int *a) {
*a = 0;
}
int main() {
int arr[5] = {2, 3, 4, 5, 6};
fun(&arr[2]);
printf("%d\n", arr[2]); //prints 0
return 0;
}
난 당신이 C++를 의미 의심이있다. 이 경우 함수의 서명은 참조로 전달되는지 여부를 결정합니다.
int fun(int &a) { //by reference, because of &
*a = 0;
}
int main() {
int arr[5] = {2, 3, 4, 5, 6};
fun(arr[2]);
printf("%d\n", arr[2]); //prints 0
return 0;
}
당신의 질문 c
태그입니다 그래서 내가 그 상황에 응답 할 것이다 : C 언어에서
을 더 통과에 의해 참조가 없습니다. 우리는 포인터를 전달함으로써 참조에 의한 통과와 비슷한 결과를 얻을 수 있습니다.
즉, 포인터를 함수에 전달하지 않으면 호출 범위 내에서 값이 변경되지 않는다고합니다.
void func(int a)
{
a = a * 2; // value of a within the calling scope does not change (pass-by-value)
}
void func2(int *a)
{
*a = (*a) * 2; // value pointed to by a is changed within the calling scope
}
C 배열은 첫 번째 요소에 대한 포인터로 전달됩니다. 그것들은 실제로 값으로 전달되지 않는 유일한 요소입니다 (포인터는 값으로 전달되지만 배열은 복사되지 않습니다). 그러면 호출 된 함수가 내용을 수정할 수 있습니다.
어떤 배열을 인수로 전달할 때 중요한 점은 호출 된 함수에서 배열을 처리하는 방법입니다. 전달 된 값 (* val)의 주소를 얻으면 참조로 전달하고 값을 변수로 직접 가져 오는 경우 (val) 다음 값으로 전달과 같이 동작합니다.
작은 예제로 시도해보십시오. – gongzhitaao
값입니다. arr [2]는 4입니다. fun가 정의되었다고 가정하십시오. int fun (int arg) {printf ("% d \ n", arg); return (arg); }, 재미는 4를 인쇄 할 것입니다. – ChuckCottrill
@CommanderCorianderSalamander C는 참조가 없습니다 – gongzhitaao