찾다
백엔드 개발C#.Net 튜토리얼C 언어의 포인터 변수에 대한 이름 지정 규칙은 무엇입니까?

C 언어에는 포인터 변수 이름 지정에 대한 고정 규칙은 없지만 좋은 이름 지정 습관을 따르는 것이 중요합니다. Pointing 데이터 유형을 접두사 (예 : intptr)로 사용하고, 포인터 목적을 반영하고, CurrentNodeptr과 같은 포인팅 객체 (예 : 단일 레터 이름 지정)를 피하고 의미있는 약어를 사용하며 이름 지정 스타일을 일관되게 유지하는 것이 좋습니다.

C 언어의 포인터 변수에 대한 이름 지정 규칙은 무엇입니까?

C 언어로 된 포인터 변수 이름? 이 질문은 훌륭합니다. 간단 해 보이지만 실제로 비밀이 있습니다. 많은 초보자들은 이름을 지정한다고 생각하지만 코드가 쓰여질 때 혼란스러워지고 하늘에 도달하는 것보다 디버깅하기가 더 어렵습니다. 나는 또한이 상황에 빠졌으므로 지금은 포인터의 이름을 지정하는 것에 대해 매우 신중합니다.

가장 기본적인 것에 대해 이야기 해 봅시다. C 언어 자체는 포인터 변수의 이름 지정 규칙을 의무화하지 않으며 일부 언어만큼 엄격하지 않습니다. 그러나 좋은 이름 지정 습관은 코드의 가독성과 유지 가능성을 크게 향상시킬 수 있으며, 이는 진부한 것입니다. 그러나 그것은 또한 가장 중요한 것입니다.

가장 직관적 인 것은 포인터가 접두사로 가리키는 데이터 유형을 사용하는 것입니다. 예를 들어, 정수 변수에 대한 포인터의 경우 intPtr 사용할 수 있고 문자 배열에 대한 포인터의 경우 charArrPtr 사용할 수 있습니다. 이 방법은 간단하고 조잡하지만 명확하고 명확하게하는 것이 좋습니다. 이는 초보자에게 특히 적합합니다. 그러나 모든 것이 괜찮을 것이라고 생각하지 마십시오. 이것은 시작일뿐입니다.

코드가 ptr1 , ptr2 , ptr3 로 채워져 있다고 상상해보십시오 ... 재앙입니다! 당신은 곧 각 포인터가 가리키는 것을 잊어 버릴 것이며, 버그를 바꿀 때 더욱 미쳤을 것입니다. 따라서 좋은 명명은 포인터의 목적과 가리키는 대상을 반영해야합니다.

예를 들어, 포인터를 사용하여 링크 된 목록을 가로 지르려면 모호한 이름을 nodePtr 과 사용하지 마십시오. currentNodePtr 또는 listIteratorPtr 직접 사용하는 것이 좋지 않습니까? 이를 통해 포인터의 기능을 한눈에 볼 수있어 불필요한 생각을 많이 절약 할 수 있습니다. 예를 들어, 함수는 resultPtr 이라고 불리는 것이 아니라 동적으로 할당 된 메모리에 대한 포인터를 반환합니다. allocateBufferPtr 또는 getImageDataPtr 과 같은 함수 이름 또는 메모리 목적을 추가 하여이 포인터가 어떤 유형의 메모리를 가리키는 지 알 수 있습니다.

몇 가지 팁이 있습니다.

  • 루프 카운터와 같은 임시 변수가 아닌 한 단일 레터 이름 지정을 피하십시오.
  • 의미있는 약어를 사용하지만 약어를 이해하기 쉽습니다.
  • 명명 스타일의 일관성을 유지하고 프로젝트 전체에서 낙타 명명법 또는 밑줄 명명법을 사용하고 혼동에 사용하지 마십시오.

결국, 포인터 변수 이름 지정에 대한 절대적인 규칙은 없으며 좋은 습관 만 있습니다. 좋은 명명을 통해 몇 달 또는 몇 년 안에 쓴 코드를 쉽게 이해할 수 있습니다. 반대로, 나쁜 명명은 당신을 끝없는 디버깅 지옥에 빠뜨릴 수 있습니다. 이것은 코드 사양의 문제 일뿐 만 아니라 프로그래밍 문해력의 반영이기도합니다. 코드를 작성하는 것은 문제를 해결하는 것이 아니라 문제를 해결하는 것입니다. 그리고 좋은 이름 지정 습관은 문제를 해결하기위한 첫 번째 단계입니다.

마지막으로, 내가 좋아하는 포인터 이름 지정 스타일을 보여주기 위해 작은 코드 스 니펫을 제시 할 것입니다.

 <code class="c">#include <stdio.h> #include <stdlib.h> // 结构体定义typedef struct Node { int data; struct Node* nextNodePtr; } Node; int main() { // 创建链表头节点Node* headNodePtr = (Node*)malloc(sizeof(Node)); headNodePtr->data = 10; headNodePtr->nextNodePtr = NULL; // 创建第二个节点Node* secondNodePtr = (Node*)malloc(sizeof(Node)); secondNodePtr->data = 20; secondNodePtr->nextNodePtr = NULL; // 连接两个节点headNodePtr->nextNodePtr = secondNodePtr; // 遍历链表并打印数据Node* currentNodePtr = headNodePtr; while (currentNodePtr != NULL) { printf("%d ", currentNodePtr->data); currentNodePtr = currentNodePtr->nextNodePtr; } printf("\n"); // 释放内存free(headNodePtr); free(secondNodePtr); return 0; }</stdlib.h></stdio.h></code>

이 예에서는 headNodePtr , nextNodePtr , currentNodePtr 등이 포인터의 목적과 모호성을 피하고 가리키는 객체를 명확하게 표현합니다. 이것들이 당신에게 영감을 줄 수 있기를 바랍니다. 이 코드는 사람들이 볼 수 있도록 작성되었으며 두 번째는 기계에 대해 실행됩니다.

위 내용은 C 언어의 포인터 변수에 대한 이름 지정 규칙은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
(超详细)VScode中配置C语言环境的方法(超详细)VScode中配置C语言环境的方法Dec 05, 2022 pm 07:05 PM

VScode中怎么配置C语言环境?下面本篇文章给大家介绍一下VScode配置C语言环境的方法(超详细),希望对大家有所帮助!

c语言中node是什么意思c语言中node是什么意思Jul 06, 2022 pm 03:51 PM

在C语言中,node是用于定义链表结点的名称,通常在数据结构中用作结点的类型名,语法为“struct Node{...};”;结构和类在定义出名称以后,直接用该名称就可以定义对象,C语言中还存在“Node * a”和“Node* &a”。

c语言怎么将数字转换成字符串c语言怎么将数字转换成字符串Jan 04, 2023 pm 03:20 PM

c语言将数字转换成字符串的方法:1、ascii码操作,在原数字的基础上加“0x30”,语法“数字+0x30”,会存储数字对应的字符ascii码;2、使用itoa(),可以把整型数转换成字符串,语法“itoa(number1,string,数字);”;3、使用sprintf(),可以能够根据指定的需求,格式化内容,存储至指针指向的字符串。

c语言开根号运算符是什么c语言开根号运算符是什么Mar 06, 2023 pm 02:39 PM

在c语言中,没有开根号运算符,开根号使用的是内置函数“sqrt()”,使用语法“sqrt(数值x)”;例如“sqrt(4)”,就是对4进行平方根运算,结果为2。sqrt()是c语言内置的开根号运算函数,其运算结果是函数变量的算术平方根;该函数既不能运算负数值,也不能输出虚数结果。

c语言数组如何初始化c语言数组如何初始化Jan 04, 2023 pm 03:36 PM

C语言数组初始化的三种方式:1、在定义时直接赋值,语法“数据类型 arrayName[index] = {值};”;2、利用for循环初始化,语法“for (int i=0;i<3;i++) {arr[i] = i;}”;3、使用memset()函数初始化,语法“memset(arr, 0, sizeof(int) * 3)”。

c语言合法标识符的要求是什么c语言合法标识符的要求是什么Aug 27, 2020 pm 01:47 PM

c语言合法标识符的要求是:1、标识符只能由字母(A~Z, a~z)、数字(0~9)和下划线(_)组成;2、第一个字符必须是字母或下划线,不能是数字;3、标识符中的大小写字母是有区别的,代表不同含义;4、标识符不能是关键字。

c语言中源文件编译后生成什么文件c语言中源文件编译后生成什么文件Nov 23, 2022 pm 07:44 PM

c语言编译后生成“.OBJ”的二进制文件(目标文件)。在C语言中,源程序(.c文件)经过编译程序编译之后,会生成一个后缀为“.OBJ”的二进制文件(称为目标文件);最后还要由称为“连接程序”(Link)的软件,把此“.OBJ”文件与c语言提供的各种库函数连接在一起,生成一个后缀“.EXE”的可执行文件。

c语言怎么计算n的阶乘c语言怎么计算n的阶乘Jan 04, 2023 pm 03:18 PM

c语言计算n的阶乘的方法:1、通过for循环计算阶乘,代码如“for (i = 1; i <= n; i++){fact *= i;}”;2、通过while循环计算阶乘,代码如“while (i <= n){fact *= i;i++;}”;3、通过递归方式计算阶乘,代码如“ int Fact(int n){int res = n;if (n > 1)res...”。

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

뜨거운 도구

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SecList

SecList

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

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음