#include <stdio.h>
int* func()
{
static int a = 5; /* line 5 */
printf("%d\n",++a);
return &a; /* line 7 */
}
int main(void)
{
int *b = func(); /* line 12 */
(*b)++;
func();
}
이것은 코딩 작업을 테스트하는 코드 예제이므로 반드시 최적 일 필요는 없습니다. 나는 C++과 Java에 대한 기본적인 지식을 갖고 있지만 이것들은 C에서 문제가있는 포인터이다.C.의 포인터이 작은 코드에 대한 설명이 필요합니다
func()의 반환 유형은 포인터이지만 정수 (line7)의 주소를 반환합니다. 정수가 정적이라는 사실 (5 행)은 이것으로 무엇인가해야합니까?
12 번 줄은 실제로 무엇을합니까? 이 코드의
출력은 다음과 같습니다
6
8
Inc'static' 키워드로 인해 전역 변수로 작동하는 변수 'a'. – LPs
'static '이 없으면 이것은 폭탄이 될 것입니다 ....'a'를 세 번 증가시키는 복잡한 방법이 있습니다. '(* b)'는'a'를 가리킴으로써 라인은'a ++'와 같습니다. –
"저는 C++에 대한 기본적인 지식을 가지고 있습니다"이것은 매우 기본적인 것들입니다. 이 코드가 무엇인지 모르지만 C++ 프로그래밍 작업을 신청할 것이라고 말하고 있습니까? – Lundin