>  기사  >  백엔드 개발  >  초보 프로그래머가 C 언어와 C++의 차이점에 대해 알아야 할 사항

초보 프로그래머가 C 언어와 C++의 차이점에 대해 알아야 할 사항

烟雨青岚
烟雨青岚앞으로
2020-06-19 13:42:442507검색

초보 프로그래머가 C 언어와 C++의 차이점에 대해 알아야 할 사항

C언어와 C++의 차이점에 대해 초보 프로그래머가 알아야 할 것은 무엇입니까?

프로그래밍을 처음 배울 때 C언어와 C++가 같다고 생각하는 사람이 많나요? ? 오늘은 C언어와 C++의 차이점을 자세히 소개해보겠습니다.

1. 키워드

파란색은 C 언어의 키워드입니다. C++는 C 언어의 모든 키워드를 상속합니다. 다음 빨간색은 C++에는 포함되지 않는 키워드입니다(c++98에 따르면). C++에는 63개의 키워드가 포함된 것으로 제안됨)
초보 프로그래머가 C 언어와 C++의 차이점에 대해 알아야 할 사항

2. 소스 파일 차이점
C 언어 파일 접미사는 ​​.c, C++ 원본 파일 이름 접미사는 ​​.cpp
소스 파일 생성 시 아무것도 지정하지 않은 경우 , 기본값은 입니다.
3. 반환 값은 다릅니다.
C 언어에서 함수가 반환 값 유형을 지정하지 않으면 기본값은 int 유형이며 일반적으로 0XCCCCCCCC
C++에서는 함수는 값을 반환하지 않으므로 void 유형으로 지정해야 합니다. 그렇지 않으면 컴파일이 통과되지 않습니다
4. 매개변수 목록
C 언어에서 함수에 지정된 매개변수 목록이 없으면 다음과 같이 매개변수를 얼마든지 받을 수 있습니다. default
C++에는 엄격한 매개변수 유형 감지 기능과 매개변수 목록이 없는 함수가 있습니다. 기본값은 void이고 매개변수를 받지 않습니다.
기본 매개변수
기본 매개변수는 선언 및 정의 시 기본값을 지정하는 함수 매개변수입니다. 이 함수를 호출할 때 실제 매개변수를 지정하지 않으면 기본값이 사용되고, 그렇지 않으면 지정된 실제 매개변수가 사용됩니다.
다음 코드:

#include<iostream>using namespace std;void test(int a = 1)
{    cout << a << endl;
}int main()
{
    test();
    test(10);//输出的结果是1
    return 0;//函数输出结果是10}

기본 매개변수는 두 가지 범주로 구분됩니다. 하나는 전체 기본값이고 다른 하나는 준기본값입니다.
첫 번째는 전체 기본값입니다. 모든 매개변수에는 기본값이 있습니다. 매개변수가 수동으로 전달되지 않으면 컴파일러는 기본 매개변수 목록에 있는 매개변수를 사용합니다. 하지만 여기서 주목할 점은 매개변수 전달 시 일부 매개변수만 전달되면 값이 왼쪽에서 오른쪽으로 일치된다는 점입니다.
코드 예시:

#include<iostream>using namespace std;void test(int a = 1,int b = 2, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}int main()
{
    test();//1 2 3
    test(10);//10 2 3
    test(10, 20);//10 20 3
    test(10, 20, 30);//10 20 30
    return 0;
}

준기본 매개변수 코드 데모:

void test(int a ,int b = 2, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}void test1(int a, int b, int c = 3)
{    cout << a << " " << b << " " << c << endl;
}

테스트 함수는 최소한 하나의 매개변수를 전달하고, test1 함수는 최소한 두 개의 매개변수를 전달해야 함수가 정상적으로 실행될 수 있습니다.

참고:
기본값이 있는 매개변수는 매개변수 목록의 끝에 배치되어야 합니다. 매개변수는 오른쪽에서 왼쪽으로 전달되기 때문입니다.
기본 매개변수는 함수 선언과 정의에 모두 나타날 수 없으며, 하나만 남길 수 있습니다.
기본값은 상수이거나 전역
변수여야 합니다.
C 언어는 기본값을 지원하지 않습니다.
5. C++에서는 함수 오버로딩을 지원하지만 C 언어에서는 그렇지 않습니다.
실제 개발에서는 비슷한 기능을 가진 여러 함수를 구현해야 하는 경우도 있지만 일부 세부 사항은 다릅니다. 예를 들어 int, float, char, bool 등 여러 유형을 갖는 두 변수의 값을 교환하려면 매개변수를 통해 변수의 주소를 함수에 전달해야 합니다. C 언어에서 프로그래머는 서로 다른 이름을 가진 세 가지 함수를 설계해야 하는 경우가 많으며 해당 함수 프로토타입은 다음과 유사합니다.

void swap1(int *a, int *b); //交换 int 变量的值
void swap2(float *a, float *b); //交换 float 变量的值
void swap3(char *a, char *b); //交换 char 变量的值
void swap4(bool *a, bool *b); //交换 bool 变量的值

그러나 C++에서는 이것이 전혀 필요하지 않습니다. C++에서는 매개변수 목록이 다른 한 여러 함수가 동일한 이름을 가질 수 있습니다. 이것이 함수 오버로딩(함수 오버로딩)입니다. 오버로딩을 사용하면 함수 이름을 여러 목적으로 사용할 수 있습니다.

매개변수 목록은 매개변수 유형, 매개변수 수, 매개변수 순서를 포함하여 매개변수 시그니처라고도 합니다. 한 가지 차이점이 있는 한 다른 매개변수 목록이라고 합니다.

#include <iostream>using namespace std;//交换 int 变量的值void Swap(int *a, int *b){int temp = *a;
*a = *b;
*b = temp;
}//交换 float 变量的值void Swap(float *a, float *b){float temp = *a;
*a = *b;
*b = temp;
}//交换 char 变量的值void Swap(char *a, char *b){char temp = *a;
*a = *b;
*b = temp;
}//交换 bool 变量的值void Swap(bool *a, bool *b){char temp = *a;
*a = *b;
*b = temp;
}int main(){//交换 int 变量的值int n1 = 100, n2 = 200;
Swap(&n1, &n2);cout<<n1<<", "<<n2<<endl;//交换 float 变量的值float f1 = 12.5, f2 = 56.93;
Swap(&f1, &f2);cout<<f1<<", "<<f2<<endl;//交换 char 变量的值char c1 = &#39;A&#39;, c2 = &#39;B&#39;;
Swap(&c1, &c2);cout<<c1<<", "<<c2<<endl;//交换 bool 变量的值bool b1 = false, b2 = true;
Swap(&b1, &b2);cout<<b1<<", "<<b2<<endl;return 0;
}

작업 결과:

200, 100 
56.93, 12.5 
B, A 
1, 0

오버로드는 범위(동일한 클래스, 동일한 네임스페이스 등) 내에 이름은 같지만 매개변수가 다른 여러 함수가 있음을 의미합니다. 오버로딩의 결과로 함수 이름은 여러 용도로 사용되므로 이름 지정이 더 편리해지고(중간 및 대규모 프로젝트에서는 변수, 함수 및 클래스 이름 지정이 어려운 문제임) 호출이 더 유연해집니다.

오버로드된 함수를 사용할 때, 동일한 이름을 가진 함수의 함수는 동일하거나 유사해야 합니다. 전혀 관련이 없는 기능을 구현하려면 동일한 함수 이름을 사용하지 마십시오. 프로그램은 실행될 수 있지만 가독성이 좋지 않고 사람을 불편하게 만듭니다. 혼란스러워요.
매개변수 목록마다 매개변수의 숫자, 유형 또는 순서가 다르므로 매개변수 이름만 다르게 사용하는 것은 허용되지 않습니다. 함수 반환 값은 오버로딩의 기초로 사용할 수 없습니다.

함수 오버로딩 규칙:

(1) 함수 이름은 동일해야 합니다.

(2) 함수의 반환 유형은 같을 수도 있고 다를 수도 있습니다.

(3)仅仅返回类型不同不足以成为函数的重载。
6、指针和引用
C语言中函数传参方式有两种:传值和传址
以传值方式,在函数调用过程中会生成一份临时变量用形参代替,最终把实参的值传递给新分配的临时形参。它的优点是避免了函数调用的副作用,却无法改变形参的值。如果要改变实参的值,只能通过指针传递。
指针可以解决问题,但是不安全,因此在C++中引入了引用。
引用:引用不是新定义的一个变量,他是原变量的一个别名,编译器不会为引用变量开辟空间,它和他引用的变量共用同一块内存空间。
类型& 变量(对象名)=引用变量
int &num1=num0;
引用特性;:
(1)引用定义时必须初始化
(2)一个变量可以有多个引用
(3)引用一旦绑定一个实体就不能改变为其他变量的引用
//指针和引用的区别
引用不可以为空,但指针可以为空
引用不可以改变指向,对一个对象”至死不渝”;但是指针可以改变指向,而指向其它对象
引用的大小是所指向的变量的大小,因为引用只是一个别名而已;指针是指针本身的大小,4个字节。

7、命名空间
在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局命名空间中,会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或者名字污染,namespace关键字的出现就是解决这种问题。而C语言中没有。
8、输入与输出
cout代表c++的输出流
cin代表c++的输入流
它们都是在头文件“iostream”中定义。
“cout”必须与”在一条语句中可以多次使用“如:cout

#include <iostream>using namespace std;int main()
{int a,b;cout<<"请输入a,b的值"<<endl;cin>>a>>b;cout<<"输出a的值"<<a<<"输出b的值"<<b<<endl;return 0;
}

感谢大家的阅读,大家现在知道C语言和C++的区别了吗?                                  

本文转自:https://blog.csdn.net/qq_39539470/article/details/81268916

推荐教程:《C语言

위 내용은 초보 프로그래머가 C 언어와 C++의 차이점에 대해 알아야 할 사항의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제