초보 프로그래머가 C 언어와 C++의 차이점에 대해 알아야 할 사항
C언어와 C++의 차이점에 대해 초보 프로그래머가 알아야 할 것은 무엇입니까?
프로그래밍을 처음 배울 때 C언어와 C++가 같다고 생각하는 사람이 많나요? ? 오늘은 C언어와 C++의 차이점을 자세히 소개해보겠습니다.
1. 키워드
파란색은 C 언어의 키워드입니다. C++는 C 언어의 모든 키워드를 상속합니다. 다음 빨간색은 C++에는 포함되지 않는 키워드입니다(c++98에 따르면). C++에는 63개의 키워드가 포함된 것으로 제안됨)
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 = 'A', c2 = 'B'; 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











C 언어 데이터 구조 : 트리 및 그래프의 데이터 표현은 노드로 구성된 계층 적 데이터 구조입니다. 각 노드에는 데이터 요소와 하위 노드에 대한 포인터가 포함되어 있습니다. 이진 트리는 특별한 유형의 트리입니다. 각 노드에는 최대 두 개의 자식 노드가 있습니다. 데이터는 structtreenode {intdata; structtreenode*왼쪽; structReenode*오른쪽;}을 나타냅니다. 작업은 트리 트래버스 트리 (사전 조정, 인 순서 및 나중에 순서) 검색 트리 삽입 노드 삭제 노드 그래프는 요소가 정점 인 데이터 구조 모음이며 이웃을 나타내는 오른쪽 또는 무의미한 데이터로 모서리를 통해 연결할 수 있습니다.

파일 작동 문제에 대한 진실 : 파일 개방이 실패 : 불충분 한 권한, 잘못된 경로 및 파일이 점유 된 파일. 데이터 쓰기 실패 : 버퍼가 가득 차고 파일을 쓸 수 없으며 디스크 공간이 불충분합니다. 기타 FAQ : 파일이 느리게 이동, 잘못된 텍스트 파일 인코딩 및 이진 파일 읽기 오류.

C에서 카운트 다운을 출력하는 방법? 답변 : 루프 명령문을 사용하십시오. 단계 : 1. 변수 n을 정의하고 카운트 다운 번호를 출력에 저장합니다. 2. n이 1보다 작을 때까지 n을 지속적으로 인쇄하려면 while 루프를 사용하십시오. 3. 루프 본체에서 n의 값을 인쇄하십시오. 4. 루프가 끝나면 n을 1 씩 빼기 위해 다음 작은 상호 상호를 출력합니다.

C 언어 함수는 재사용 가능한 코드 블록이며 처리를위한 매개 변수를 수신하며 결과를 반환합니다. 스위스 육군 나이프와 유사하며 강력하며 신중하게 사용해야합니다. 함수에는 형식 정의, 매개 변수, 반환 값 및 기능 본체와 같은 요소가 포함됩니다. 고급 사용법에는 기능 포인터, 재귀 함수 및 콜백 기능이 포함됩니다. 일반적인 오류는 유형 불일치이며 프로토 타입을 선언하는 것을 잊는 것입니다. 디버깅 기술에는 변수 인쇄 및 디버거 사용이 포함됩니다. 성능 최적화는 인라인 함수를 사용합니다. 기능 설계는 단일 책임의 원칙을 따라야합니다. C 언어 기능의 숙련도는 프로그래밍 효율성과 코드 품질을 크게 향상시킬 수 있습니다.

C 언어 기능의 반환 값 유형에는 int, float, double, char, void 및 포인터 유형이 포함됩니다. INT는 정수를 반환하는 데 사용되며 플로트 및 더블은 플로트를 반환하는 데 사용되며 Char는 문자를 반환합니다. 무효는 함수가 값을 반환하지 않음을 의미합니다. 포인터 유형은 메모리 주소를 반환하고 메모리 누출을 피하기 위해주의하십시오. 구조 또는 컨소시엄은 여러 관련 데이터를 반환 할 수 있습니다.

알고리즘은 문제를 해결하기위한 일련의 지침이며 실행 속도 및 메모리 사용량은 다양합니다. 프로그래밍에서 많은 알고리즘은 데이터 검색 및 정렬을 기반으로합니다. 이 기사에서는 여러 데이터 검색 및 정렬 알고리즘을 소개합니다. 선형 검색은 배열 [20,500,10,5,100,1,50]이 있으며 숫자 50을 찾아야한다고 가정합니다. 선형 검색 알고리즘은 대상 값이 발견되거나 전체 배열이 통과 될 때까지 배열의 각 요소를 하나씩 점검합니다. 알고리즘 플로우 차트는 다음과 같습니다. 선형 검색의 의사 코드는 다음과 같습니다. 각 요소를 확인하십시오. 대상 값이 발견되는 경우 : true return false clanue 구현 : #includeintmain (void) {i 포함

C 언어 함수는 매개 변수 목록, 기능 본문, 반환 값 유형 및 함수 이름으로 구성됩니다. 함수가 호출되면 매개 변수는 값 전송 메커니즘을 통해 함수에 복사되며 외부 변수에는 영향을 미치지 않습니다. 포인터는 메모리 주소로 직접 전달되므로 포인터를 수정하면 외부 변수에 영향을 미칩니다. 기능 프로토 타입 선언은 컴파일 오류를 피하기 위해 기능 서명의 컴파일러에게 알리는 데 사용됩니다. 스택 공간은 기능 로컬 변수 및 매개 변수를 저장하는 데 사용됩니다. 재귀 또는 공간이 너무 많으면 스택 오버플로가 발생할 수 있습니다.

C 언어에서 가장 큰 일반적인 제수를 효율적이고 우아하게 찾는 방법 : 나머지가 0이 될 때까지 나머지를 지속적으로 나누어서 위상 분할을 사용하여 두 가지 구현 방법이 제공됩니다. 재귀와 반복은 간결하고 명확하며 반복 구현이 더 높고 안정됩니다. 음수와 0을 처리하는 데주의를 기울이고 성능 최적화를 고려하지만 위상 부서 자체는 효율적입니다.
