복합 리터럴 포인터를 초기화 한 포인터를 초기화 그리 일반적인 방법이다.는 C
#include <stdio.h>
int main(void)
{
int *p = (int[10]){[1]=1};
printf("%d\n", p[1]);
}
출력 :
1
이 프로그램은 컴파일 및 G에서 잘 실행 ++ 컴파일러.
그래서,
는 복합 리터럴에 대한 포인터를 초기화하는 올바른 방법인가
? 또는정의되지 않은 동작 복합 리터럴에 대한 포인터를 초기화합니까?
'int p [10];'과'p [1] = 1'을 설정 한 후 (깨끗하게 코딩하는 경우) – YaatSuka
"익명의 배열 요소" 화합물 리터럴 (compound literal) "이 발생합니다. 그렇지 않으면 : 포인터로 변환하지 않고 복합 리터럴 *을 사용하는 * 방법이 있습니까? 유일한 질문은 복합 문자의 수명입니다. –
"포인터를 초기화하는 올바른 방법입니까?" 당신이하고 싶은 것에 달려 있습니다. 코드는'int arr [10] = {[1] = 1}과 100 % 동일합니다. int * p = arr;'. 로컬 범위를 가진 배열을 원한다면 어느 것이 든 완벽하게 괜찮습니다. – Lundin