Vb 프로세스에 사용되는 매개변수는 실제 매개변수와 형식 매개변수로 나뉩니다. 간단히 말해서, 프로세스 정의에 지정된 매개변수는 형식 매개변수이고, 프로시저 호출문에 지정된 매개변수는 실제 매개변수입니다. 매개 변수가 있는 패스를 호출하면 형식 매개 변수와 실제 매개 변수가 하나씩 일치하며 전달 방법에 따라 값별 및 주소별 두 가지로 나눌 수 있습니다. 매개변수 전달 방식에 대한 정확한 판별은 과정 학습의 난점이자 등급 시험의 한 시험점이다.
첫째, 값별 및 주소별 connotation
값에 따라 매개 변수를 전달하는 것은 기본적으로 실제 매개 변수의 값을 모양 매개 변수에 복사하는 것이므로 모양 매개 변수는 실제 매개 변수의 복사본을 가져옵니다. 프로세스 실행 중에 모양 매개 변수를 변경해도 실제 매개 변수 자체에는 영향을 주지 않습니다. 주소별로 매개 변수를 전달하는 것은 기본적으로 실제 매개 변수의 주소를 형식 매개 변수에 전달하므로 형식 참여 실제 매개 변수는 동일한 메모리 단위를 가리키며 프로세스 실행 중 형식 매개 변수가 변경되면 해당 실제 매개 변수도 변경됩니다.
둘째, 매개 변수 전달 방법 판별 방법
매개 변수가 전달되는 방식을 판단하면 단순히 프로세스 정의 중 형식 참조 앞의 수정 구분자가 byval 인지 아닌지를 볼 수 없습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 매개 변수명언) 매개 변수 전달 방법은 프로세스 정의뿐만 아니라 프로시저 호출에도 따라 달라집니다. 즉, 해당 실제 매개 변수의 특정 형태와도 관련이 있습니다. 따라서 다음 세 가지 측면에서 종합적으로 고려해야 합니다.
1. 형식 인수가 배열 또는 컨트롤인지 여부
2. 형식 매개 변수 앞에 byval 수식이 있는지 여부
3. 해당 실제 인수가 표현식인지 아니면 값
인지 여부구체적인 판별 방법은 아래의 판별 순서도를 참조하십시오.
셋째, 매개 변수 유형에 대한 다른 전달 방법의 요구 사항
매개 변수가 주소로 전달된 경우 VB 는 실제 매개 변수의 데이터 유형이 형식 매개 변수의 데이터 유형과 정확히 일치해야 합니다. 매개변수가 값으로 전달된 경우 실제 매개변수 데이터 유형은 쉐이프 매개변수와 정확히 일치할 필요는 없지만 VB 에서 기본적으로 변환할 수 있어야 합니다.
넷째, 문제 해결 응용 프로그램
(a) 장쑤 성 컴퓨터 등급 시험 2001 년 봄 시험 문제를 예로 들어
응용 프로그램에서 사용? Private function fun(x as integer, y as single)? 함수 fun. 함수 fun 호출 중 변수 I, j 는 모두 integer 형으로 정의되며 함수 fun 을 올바르게 참조하는 것은 ____
입니다①fun(i, j) ②call fun(i, 3.65)
③ 팬 (3.14,234) ④ 팬 (? 245? ,? 231.5? )
A. ① ③ B. ③ ③ C. ② ② ③ D. 931931② ② ③ ④
분석:
1. 판별 흐름도에 따라 각 참조에 대해 다음과 같이 판단합니다.
①fun(i, j) 의 경우 실제 매개 변수 I 는 형식 매개 변수 x 와 일치합니다. 형식 매개 변수 x 는 배열이 아니고 byval 수식이 없고 실제 매개 변수 I 는 변수이고 값이나 표현식이 아니기 때문에 매개 변수는 주소로 전달됩니다. 마찬가지로 실제 참조 J 와 형식 참조 Y 도 주소로 전달될 것으로 추정할 수 있습니다.
Vb 요구 사항에 따라 주소로 전달된 실삼과 형식 매개 변수는 유형에 따라 정확히 일치해야 하며, 제목에 따르면 J 는 integer, Y 는 single 이므로 ① 정확하지 않습니다. ②call fun(i, 3.65) 의 경우 I 와 x 는 주소로 전달됩니다. 실삼 3.65 는 값이며, 형삼 Y 와 일치할 때 값에 따라 전달되므로 ② 정확하다. ③fun(3.14, 234) 의 경우 실삼 3.14 에 해당하는 형삼 X 는 integer 이고 실삼 234 에 해당하는 형삼 Y 는 single 이지만 모두 값에 따라 전달되기 때문에 3.14 는 3 으로 변환되고 234 는 Y 에 직접 할당될 수 있으므로 ③ 정확하다. ④fun (? 245? ,? 231.5? ), 실제 인삼 때문에? 245? 그리고? 231.5? 모두 문자열 값이므로 해당 형식 매개변수 x, y 와 함께 값에 따라 전달되고 숫자 문자열은 숫자 유형으로 변환될 수 있으므로 ④ 정확합니다.
요약하면 정답은 b 입니다.
2. 이 문제의 경우, 요구로 인해? 함수 fun 을 올바르게 참조할 수 있는 것은? 따라서 ③ ④ 괄호가 있고 call 부팅이 없지만 print fun (3.14,234) 과 같은 방식으로 인용할 수 있다. 바꿀 경우:? 함수 fun 을 올바르게 호출하는 문은? , ③ ④ 이 시점에서 선택할 수 없으며 ② 만 선택할 수 있습니다.
(b) 예를 들어, 2002 년 봄,
문 private sub convent(y as integer) 에 의해 정의된 sub 프로시저를 호출할 때 값으로 전달된 문 _ _ _ _ _ 이 아닙니다.
A. callconvent ((x)) B. callconvent (x * 1)
C.convent(x) d.convent x
분석:
1. a, b 옵션의 경우 실제 인수는 각각 (x) 와 x*1 이며 모두 표현식이므로 a, b 옵션의 실제 인수는 값에 따라 전달됩니다. D 옵션의 경우 실제 참조 X 는 괄호로 부트되지 않으며 현재는 call 을 추가할 수 없으므로 문이 정확하며 판별 순서도에 따라 실제 참조 X 와 형식 인수 Y 가 주소로 전달되어야 합니다. 이에 따라 이 제목이 단문인 주제에 대해서는 이미 답이 D 라고 단정할 수 있다.
2. 이제 c 옵션 문 convent(x) 에 괄호가 있지만 call 부팅이 없어 직관적으로 제대로 실행되지 않는 것 같습니다. 그러나 VB 코드 편집기에 이 문장을 입력하면 캐리지 리턴이 자동으로 convent (x) 로 조정됩니다. 이때 convent 와 (x) 사이에 공백이 있으므로 이 문장의 괄호는 convent 가 아닌 x 에 사용되므로 call 부트는 없지만 따라서 call convent(x) 와 convent(x) 를 모두 실행할 수 있는 것은 convent(x) 이전에 call 을 생략할 수 있기 때문이 아니라 실제 매개 변수가 각각 x 와 (x) 이므로 매개 변수가 자연스럽게 다르게 전달됩니다.
(c) 독서 프로그램은 실행 결과를 기록합니다:
Private sub form_click()
Dim x as integer, y as integer, z as integer
X = 1: y = 2: z = 3
콜 하위 1 (x, y, y)
Print x, y, z
End sub
Private sub sub1(x as integer, y as integer, byval z as integer)
Dim I as integer
X = 3 * z: y = 2 * z: z = x y
Print x, y, z
End sub
분석:
판별 흐름도에 따르면 첫 번째 및 두 번째 매개 변수는 주소로 전달되고 세 번째 매개 변수는 값으로 전달됩니다. 따라서 1, 2 형 참여는 동일한 메모리 단위를 가리키고, 3 형 참여는 해당 실제 매개변수 값은 같지만 다른 메모리 단위를 가리킵니다. 따라서 다음과 같은 매개변수 전달 및 프로시저 호출 다이어그램을 만들 수 있습니다.
실제 매개변수와 형식 매개변수는 모두 x, y, z 이지만 서로 다른 범위를 가지고 있습니다.
분석을 거쳐 최종 답은
입니다6 4 10
6 4 3
Vb 프로세스에 사용되는 매개변수는 실제 매개변수와 형식 매개변수로 나뉩니다. 간단히 말해서, 프로세스 정의에 지정된 매개변수는 형식 매개변수이고, 프로시저 호출문에 지정된 매개변수는 실제 매개변수입니다. 매개 변수가 있는 패스를 호출하면 형식 매개 변수와 실제 매개 변수가 하나씩 일치하며 전달 방법에 따라 값별 및 주소별 두 가지로 나눌 수 있습니다. 매개변수 전달 방식에 대한 정확한 판별은 과정 학습의 난점이자 등급 시험의 한 시험점이다.
첫째, 값별 및 주소별 connotation
값에 따라 매개 변수를 전달하는 것은 기본적으로 실제 매개 변수의 값을 모양 매개 변수에 복사하는 것이므로 모양 매개 변수는 실제 매개 변수의 복사본을 가져옵니다. 프로세스 실행 중에 모양 매개 변수를 변경해도 실제 매개 변수 자체에는 영향을 주지 않습니다. 주소별로 매개 변수를 전달하는 것은 기본적으로 실제 매개 변수의 주소를 형식 매개 변수에 전달하므로 형식 참여 실제 매개 변수는 동일한 메모리 단위를 가리키며 프로세스 실행 중 형식 매개 변수가 변경되면 해당 실제 매개 변수도 변경됩니다.
둘째, 매개 변수 전달 방법 판별 방법
매개 변수가 전달되는 방식을 판단하면 단순히 프로세스 정의 중 형식 참조 앞의 수정 구분자가 byval 인지 아닌지를 볼 수 없습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 매개 변수명언) 매개 변수 전달 방법은 프로세스 정의뿐만 아니라 프로시저 호출에도 따라 달라집니다. 즉, 해당 실제 매개 변수의 특정 형태와도 관련이 있습니다. 따라서 다음 세 가지 측면에서 종합적으로 고려해야 합니다.
1. 형식 인수가 배열 또는 컨트롤인지 여부
2. 형식 매개 변수 앞에 byval 수식이 있는지 여부
3. 해당 실제 인수가 표현식인지 아니면 값
인지 여부구체적인 판별 방법은 아래의 판별 순서도를 참조하십시오.
셋째, 매개 변수 유형에 대한 다른 전달 방법의 요구 사항
매개 변수가 주소로 전달된 경우 VB 는 실제 매개 변수의 데이터 유형이 형식 매개 변수의 데이터 유형과 정확히 일치해야 합니다. 매개변수가 값으로 전달된 경우 실제 매개변수 데이터 유형은 쉐이프 매개변수와 정확히 일치할 필요는 없지만 VB 에서 기본적으로 변환할 수 있어야 합니다.
넷째, 문제 해결 응용 프로그램
(a) 장쑤 성 컴퓨터 등급 시험 2001 년 봄 시험 문제를 예로 들어
응용 프로그램에서 사용? Private function fun(x as integer, y as single)? 함수 fun. 함수 fun 호출 중 변수 I, j 는 모두 integer 형으로 정의되며 함수 fun 을 올바르게 참조하는 것은 ____
입니다①fun(i, j) ②call fun(i, 3.65)
③ 팬 (3.14,234) ④ 팬 (? 245? ,? 231.5? )
A. ① ③ B. ③ ③ C. ② ② ③ D. 931931② ② ③ ④