다음과 같은 포인터 초기화의 차이점은 무엇입니까?C에서 포인터를 초기화하는 올바른 방법은 무엇입니까?
char array_thing[10];
char *char_pointer;
다음 초기화의 차이점은 무엇입니까?
1.) char_pointer = array_thing;
2.) char_pointer = &array_thing
두 번째 초기화가 유효합니까?
다음과 같은 포인터 초기화의 차이점은 무엇입니까?C에서 포인터를 초기화하는 올바른 방법은 무엇입니까?
char array_thing[10];
char *char_pointer;
다음 초기화의 차이점은 무엇입니까?
1.) char_pointer = array_thing;
2.) char_pointer = &array_thing
두 번째 초기화가 유효합니까?
두 번째 초기화가 유효하지 않습니다. 당신은 사용할 필요가 :
char_pointer = array_thing;
또는
char_pointer = &array_thing[0];
&array_thing
이 경우 배열에 대한 포인터 (입력 char (*)[10]
, 당신은 배열의 첫 번째 요소에 대한 포인터를 찾고
게시 한 코드에는 초기화가 전혀 없습니다. 즉, 배열은 포인터 (배열의 첫 번째 요소에 대한 포인터)로 부패한다는 점을 기억해야합니다. 배열의 주소 가져 오기 확실히 유효하지만 지금은 0입니다. char*
대신입니다. 당신이 (오히려 그것의 주소) array_thing의 첫 번째 요소에 char_pointer를 설정하는 첫 번째 경우에 http://c-faq.com/aryptr/aryvsadr.html
배열 (즉, 배열 유형의 표현식)이 대부분의 컨텍스트에서 포인터로 감쇠됩니다. * (암묵적으로 인정함). 예외는 단항'&'연산자의 피연산자, 단항'sizeof' 연산자의 피연산자 및 배열 객체를 초기화하는 데 사용되는 이니셜 라이저의 문자열 리터럴 (예 :'char s [] = "hello"; '). –
이 때 comp.lang.c 자주 묻는 질문, 질문 6.12를 참조하십시오. 포인터 산술을 사용하면 색인 생성과 마찬가지로 다른 요소로 이동합니다. 예를 들어
char_pointer[3] = 'c';
는
char_pointer = + 3과 동일하다; char_pointer = 'c';
두 번째 예제 ... 나는 그것이 당신이 그것을하는 방식으로 유효하다고 생각하지 않습니다.
:
@ k-ballo 숙제라고 결론을내는 방법을 확신 할 수 없습니다. – MGZero
숙제가 아니라 .. 단지 C 언어를 배우려고하는 것입니다. – diesel
@ K-ballo : 기본 질문을하는 사람들은 누구나 학술 정보학을 속이려고 노력하는 것이 아니라 실제로 배우고 싶은 사람들이 있습니다. – orlp