먼저 C 언어의 const와 C++의 const에 대해 설명하겠습니다. 전자에서 const로 수정된 변수는 단지 할당 기호의 왼쪽에 변수가 나타날 수 없다는 것을 컴파일러에 알려줄 뿐입니다. 후자의 C++는 C를 기반으로 const를 발전시켰습니다.
1. const
:
const
修饰的变量是只读的,本质还是变量const
修饰的局部变量在栈上分配空间const
修饰的全局变量在只读存储区分配空间const
只在编译期有用,在运行期无效const
不能定义真正意义上的常量const
声明时,在符号表中放入常量编译过程中发现常量直接以符号表中的值替换(常量折叠)
编译过程中也可能为对应的常量分配存储空间:
-
const
用在全局或者使用了static
关键字说明,存放在只读数据区extern const int i = 10; static const int i = 10; // 或者修饰全局变量 const int a =10; int main() {}
局部变量中对
const
常量使用了&
操作符,在栈区分配空间
const
:const
修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边。const
局部变量是在栈上分配空间,可以通过指针改变这个空间里面的值。过了编译期,const
变量的常量特性,只读特性就没有了,只读特性只在编译期有效,运行期根本无效。const
修饰的全局变量在只读存储区分配空间,因此如果用指针去修改了const
修饰的全局变量,程序就会崩溃,因为修改了程序只读存储区中内容,大部分程序都会发生崩溃。
2、C++中的const
:
C++在C的基础上对const
进行了进化处理,具体表现在:
注意:C++编译器虽然可能为const
常量分配空间,但不会使用其存储空间中的值符号表是编译过程中产生的一种数据结构
#include <iostream> #include <string> using namespace std; const int i = 10; // 如果通过指针去改变i,就会出现段错误:尝试修改只读数据区数据 int main() { const int a = 5; int *p = (int *)&a; // &a, 给a标识符分配空间了,并用p指向了该空间, // 可以通过*p访问这个地址,但是不能通过a来访问 *p = 10; // 不能通过指针去改变a的值 cout << a << endl; cout << *p << endl; return 0; }
3、 与宏定义对比
C++ 中的const
常量类似于宏定义
const int c = 5; // 类似于 #define c 5
但是cosnt
与宏定义的区别在于:
const
常量是有编译器处理-
编译器对
cosnt
C 언어 변수 const에 의해 수정된
은 읽기 전용이며 본질은 여전히 변수입니다 -
const에 의해 수정된 지역 변수
는 공간을 할당합니다. 스택# 🎜🎜#
const
수정된 전역 변수는 읽기 전용 저장 영역에 공간을 할당합니다
const
는 컴파일 중에만 유용하고 런타임 중에는 유효하지 않습니다.
const
는 실제 상수를 정의할 수 없습니다. # 🎜🎜# const
에 의해 수정된 변수는 실제 상수가 아니며 단지 변수가 상수의 왼쪽에 나타날 수 없다는 것을 컴파일러에 알려줄 뿐입니다. 할당 기호. const
지역 변수는 스택에 공간을 할당하며, 이 공간의 값은 포인터를 통해 변경될 수 있습니다. 컴파일 기간이 지나면 const
변수의 상수 특성과 읽기 전용 특성은 사라집니다. 읽기 전용 특성은 컴파일 기간 동안에만 유효하며 런타임에는 영향을 미치지 않습니다. const
에 의해 수정된 전역 변수는 읽기 전용 저장 영역에 공간을 할당합니다. 따라서 포인터를 사용하여 const
에 의해 수정된 전역 변수를 수정하면 프로그램이 중단됩니다. 수정된 프로그램만 있기 때문에 대부분의 프로그램은 메모리 영역의 내용을 읽을 때 충돌이 발생합니다.
const
:#🎜🎜#C++는 C를 기반으로 const
를 발전시킵니다. # 🎜🎜#- #🎜🎜##🎜🎜#
const
선언 시 심볼 테이블에 상수를 넣어주세요 #🎜🎜# #🎜🎜##🎜 🎜##🎜🎜# 컴파일 과정에서 상수가 심볼 테이블의 값으로 직접 대체되는 것을 발견했습니다(상수 폴딩) #🎜🎜##🎜🎜##🎜🎜##🎜🎜#그것도 컴파일 과정에서 가능 해당 상수에 대한 저장 공간 할당: #🎜🎜##🎜🎜#- #🎜🎜## 🎜🎜#
const
는 전역적으로 사용되거나 static
키워드 설명을 사용하여 읽기 전용 데이터 영역 #🎜🎜##include <stdio.h> void f() { #define a 3 const int b = 4; } void g() { printf("a = %d\n", a); // 在g函数中访问f函数中的宏定义,完全没有问题 // 在预处理的时候就进行了宏替换,对编译器来说,就是printf("a = %d\n", 3); // 宏是没有作用域的概念 // const 定义的常量,被编译器处理,是有作用域的,不能访问b printf("b = %d\n", b); } int main() { const int A = 1; const int B = 2; int array[A + B] = {0}; /* C编译 const修饰得到的只是具有只读特性的变量,数组的大小是由两个变量的大小决定的, 两个变量相加的结果需要在运行的时候才能直到,因此编译器编译的时候不知道这个数组长度,直接报错 */ /* C++编译 const是定义的真正意义上的常量,直接从符号表中取值,编译的时候就知道A和B的值, 可以得到数组的长度,不会报错 */ int i = 0; for(i=0; i<(A + B); i++) { printf("array[%d] = %d\n", i, array[i]); } f(); g(); return 0; }#🎜🎜##🎜🎜##에 저장됩니다. 🎜🎜# 지역 변수
&
연산자는 const
상수에 사용되어 스택 영역에 공간을 할당합니다 #🎜🎜##🎜🎜##🎜🎜##🎜🎜 #참고: C++ 컴파일러는 const
상수에 공간을 할당할 수 있지만 저장 공간의 값을 사용하지 않습니다.#🎜🎜#심볼 테이블은 컴파일 프로세스 중에 생성된 데이터 구조입니다. #🎜🎜#
rrreee#🎜🎜#3. 매크로 정의와의 비교#🎜🎜#C++의 const
상수는 매크로 정의와 유사합니다#🎜🎜#rrreee #🎜🎜#그러나 cosnt
매크로 정의와의 차이점은 다음과 같습니다. #🎜🎜#- #🎜🎜##🎜🎜#
const code>상수는 컴파일러에 의해 처리됩니다# 🎜🎜##🎜🎜##🎜🎜##🎜🎜#컴파일러는 <code>cosnt
상수에 대한 유형 검사 및 범위 검사를 수행합니다#🎜🎜##🎜🎜# #🎜🎜##🎜🎜# 매크로 정의는 전처리기에 의해 처리되며 단순한 텍스트 대체입니다. #🎜🎜##🎜🎜##🎜🎜#rrreee#🎜🎜#관련 기사: #🎜🎜##🎜🎜 ##🎜🎜##🎜🎜# PHP에서 const와 정의의 차이점 분석#🎜🎜##🎜🎜##🎜🎜#관련 동영상: #🎜🎜##🎜🎜##🎜🎜#PHP 기본 분석 동영상 튜토리얼#🎜🎜##🎜🎜#
위 내용은 C++에서 const 상수의 일반적인 사용법 분석 및 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

.NET에서 C#의 프로그래밍 프로세스에는 다음 단계가 포함됩니다. 1) C# 코드 작성, 2) 중간 언어 (IL)로 컴파일하고 .NET 런타임 (CLR)에 의해 실행됩니다. .NET에서 C#의 장점은 현대적인 구문, 강력한 유형 시스템 및 .NET 프레임 워크와의 긴밀한 통합으로 데스크탑 응용 프로그램에서 웹 서비스에 이르기까지 다양한 개발 시나리오에 적합합니다.

C#은 Microsoft가 개발 한 최신 객체 지향 프로그래밍 언어이며 .NET 프레임 워크의 일부로 개발되었습니다. 1.C#은 캡슐화, 상속 및 다형성을 포함한 객체 지향 프로그래밍 (OOP)을 지원합니다. 2. C#의 비동기 프로그래밍은 응용 프로그램 응답 성을 향상시키기 위해 비동기 및 키워드를 기다리는 키워드를 통해 구현됩니다. 3. LINQ를 사용하여 데이터 컬렉션을 간결하게 처리하십시오. 4. 일반적인 오류에는 NULL 참조 예외 및 인덱스 외 예외가 포함됩니다. 디버깅 기술에는 디버거 사용 및 예외 처리가 포함됩니다. 5. 성능 최적화에는 StringBuilder 사용 및 불필요한 포장 및 Unboxing을 피하는 것이 포함됩니다.

C#.NET 애플리케이션에 대한 테스트 전략에는 단위 테스트, 통합 테스트 및 엔드 투 엔드 테스트가 포함됩니다. 1. 단위 테스트를 통해 MSTEST, NUNIT 또는 XUNIT 프레임 워크를 사용하여 코드의 최소 단위가 독립적으로 작동합니다. 2. 통합 테스트는 일반적으로 사용되는 시뮬레이션 된 데이터 및 외부 서비스를 결합한 여러 장치의 기능을 확인합니다. 3. 엔드 투 엔드 테스트는 사용자의 완전한 작동 프로세스를 시뮬레이션하며 셀레늄은 일반적으로 자동 테스트에 사용됩니다.

C# 수석 개발자와의 인터뷰에는 비동기 프로그래밍, LINQ 및 .NET 프레임 워크의 내부 작업 원리와 같은 핵심 지식을 마스터하는 것이 필요합니다. 1. 비동기 프로그래밍은 비동기를 통해 작업을 단순화하고 응용 프로그램 응답 성을 향상시키기 위해 기다리고 있습니다. 2.linq는 SQL 스타일로 데이터를 운영하고 성능에주의를 기울입니다. 3. Net Framework의 CLR은 메모리를 관리하며 가비지 컬렉션은주의해서 사용해야합니다.

C#.NET 인터뷰 질문 및 답변에는 기본 지식, 핵심 개념 및 고급 사용이 포함됩니다. 1) 기본 지식 : C#은 Microsoft가 개발 한 객체 지향 언어이며 주로 .NET 프레임 워크에 사용됩니다. 2) 핵심 개념 : 위임 및 이벤트는 동적 바인딩 방법을 허용하고 LINQ는 강력한 쿼리 기능을 제공합니다. 3) 고급 사용 : 비동기 프로그래밍은 응답 성을 향상시키고 표현 트리는 동적 코드 구성에 사용됩니다.

C#.net은 강력한 생태계와 풍부한 지원으로 인해 마이크로 서비스를 구축하는 데 인기있는 선택입니다. 1) ASP.NETCORE를 사용하여 RESTFULAPI를 작성하여 주문 생성 및 쿼리를 처리하십시오. 2) GRPC를 사용하여 마이크로 서비스 간의 효율적인 통신을 달성하고 주문 서비스를 정의하고 구현하십시오. 3) Docker Containerized 마이크로 서비스를 통해 배포 및 관리를 단순화합니다.

C# 및 .NET의 보안 모범 사례에는 입력 확인, 출력 인코딩, 예외 처리, 인증 및 인증이 포함됩니다. 1) 일반 표현식 또는 내장 방법을 사용하여 악성 데이터가 시스템에 들어가는 것을 방지하기 위해 입력을 확인하십시오. 2) XSS 공격을 방지하기 위해 출력 인코딩 httputility.htmlencode 메서드를 사용하십시오. 3) 예외 처리는 정보 유출을 피하고 오류를 기록하지만 자세한 정보를 사용자에게 반환하지는 않습니다. 4) ASP.NETIDENITY 및 CAMPLES 기반 승인을 사용하여 신청서를 무단 액세스로부터 보호합니다.

C 언어의 결장의 의미 ( ':') : 조건부 명세서 : 조건부 표현 및 명령문 분리 블록 루프 문 : 초기화, 조건부 및 증분 표현식 매크로 정의 분리 : 매크로 이름 및 매크로 값 단일 라인 주석 설명 : 콜론에서 라인으로의 내용을 주석 차원으로 표현


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음
