C 언어
이 튜토리얼에서는 예제의 도움으로 함수에 대한 인수로 포인터를 전달하기 위한 참조에 의한 C++ 호출에 대해 배울 것입니다.
C++ 함수 자습서에서 함수에 인수를 전달하는 방법을 배웠습니다. 실제 값이 전달되기 때문에 이 방법을 값에 의한 전달이라고 합니다.
그러나 인수의 실제 값이 전달되지 않는 함수에 인수를 전달하는 또 다른 방법이 있습니다. 대신 값에 대한 참조가 전달됩니다.
예를 들어,
// function that takes value as parameter
void func1(int numVal) {
// code
}
// function that takes reference as parameter
// notice the & before the parameter
void func2(int &numRef) {
// code
}
int main() {
int num = 5;
// pass by value
func1(num);
// pass by reference
func2(num);
return 0;
}
&
주목 void func2(int &numRef)
에서 . 이것은 변수의 주소를 매개변수로 사용하고 있음을 나타냅니다.
따라서 func2()
을 호출하면 main()
의 기능 변수 num 전달 인수로 실제로 num의 주소를 전달하고 있습니다. 값 대신 변수 5 .
#include <iostream>
using namespace std;
// function definition to swap values
void swap(int &n1, int &n2) {
int temp;
temp = n1;
n1 = n2;
n2 = temp;
}
int main()
{
// initialize variables
int a = 1, b = 2;
cout << "Before swapping" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
// call function to swap numbers
swap(a, b);
cout << "\nAfter swapping" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
출력
Before swapping a = 1 b = 2 After swapping a = 2 b = 1
이 프로그램에서 변수 a를 전달했습니다. 및 b swap()
으로 기능. 함수 정의를 확인하세요.
void swap(int &n1, int &n2)
여기에서는 &
을 사용하고 있습니다. 함수가 주소를 매개변수로 받아들일 것임을 나타냅니다.
따라서 컴파일러는 실제 값 대신 변수의 참조가 함수 매개변수로 전달됨을 식별할 수 있습니다.
swap()
에서 함수, 함수 매개변수 n1 및 n2 변수 a와 동일한 값을 가리키고 있습니다. 및 b 각기. 따라서 스와핑은 실제 값에서 발생합니다.
포인터를 사용하여 동일한 작업을 수행할 수 있습니다. 포인터에 대해 알아보려면 C++ 포인터를 방문하십시오.
<시간>
#include <iostream>
using namespace std;
// function prototype with pointer as parameters
void swap(int*, int*);
int main()
{
// initialize variables
int a = 1, b = 2;
cout << "Before swapping" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
// call function by passing variable addresses
swap(&a, &b);
cout << "\nAfter swapping" << endl;
cout << "a = " << a << endl;
cout << "b = " << b << endl;
return 0;
}
// function definition to swap numbers
void swap(int* n1, int* n2) {
int temp;
temp = *n1;
*n1 = *n2;
*n2 = temp;
}
출력
Before swapping a = 1 b = 2 After swapping a = 2 b = 1
여기에서 출력이 이전 예제와 동일한 것을 볼 수 있습니다. 줄을 주목하십시오.
// &a is address of a
// &b is address of b
swap(&a, &b);
여기서 변수의 주소는 변수가 아닌 함수 호출 시 전달됩니다.
값 대신 주소가 전달되므로 역참조 연산자 *
해당 주소에 저장된 값에 액세스하는 데 사용해야 합니다.
temp = *n1;
*n1 = *n2;
*n2 = temp;
*n1
및 *n2
주소 n1에 저장된 값을 제공합니다. 및 n2 각각.
n1 이후 및 n2 a의 주소를 포함 및 b , 모든 작업이 *n1
에 수행됩니다. 및 *n2 a의 실제 값을 변경합니다. 및 b .
따라서 a 값을 출력할 때 및 b main()
기능을 사용하면 값이 변경됩니다.
C 언어
C++ 상속 이 튜토리얼에서는 예제를 통해 C++의 상속에 대해 배웁니다. 상속은 C++에서 객체 지향 프로그래밍의 핵심 기능 중 하나입니다. 기존 클래스(기본 클래스)에서 새 클래스(파생 클래스)를 만들 수 있습니다. 파생 클래스는 기본 클래스의 기능을 상속합니다. 고유한 추가 기능을 가질 수 있습니다. 예를 들어, class Animal { // eat() function // sleep() function }; class Dog : public Animal { // bark() function };
안녕하세요. 이 블로그 게시물에서 우리는 C++ 및 PLCnext Engineer의 단순 데이터 유형과 복합 데이터 유형을 탐색할 것입니다. 간단하고 복잡한 두 부분으로 구성되어 있습니다. 이 자습서에서는 C++ 및 PLCnext Engineer에 대한 경험이 있다고 가정합니다. 시작 먼저 작업에 적합한 도구, C++ 편집기, PLCnext Engineer 소프트웨어 및 이를 실행하는 피닉스컨택트 PLC가 필요합니다. 제가 사용한 자료는 다음과 같습니다. 펌웨어 버전 2021.0.3의 AXC F 2152 PLCnext En