2017년 3월 7일 화요일

포인터에서 * 연산자를 쓸떄와 안쓸떄

포인터에서
int *whoA[4] = { &num1, &num2, &num3,&num4 };
int(*whoB)[4] = arr2d;
printf("%d %d %d \n", *whoA[0], *whoA[1], *whoA[2], *whoA[3]);
printf("%d ", whoB[i][j]);

일반 포인터(포인터 + 포인터 배열)printf같은대서서 쓸떄 *를 쓰는대
왜 배열포인터나 함수포인터에서는 *를 안붙이고 그냥쓰나요?

답변 : 배열이랑 함수는 포인터 = 배열 이라고 생각하고 배열포인터를쓰면 배열포인터=배열 < 이렇게 대입되서 그냥 배열처럼 쓸수있게 된다고 생각하면될 듯..

완벽한거 아님

<추가>

연산자 : *(포인터)
우선 순위 : 2순위. (!, ++, --, - 등과 동급)
결합 순위 : 오른쪽 우선
종류 : 포인터, 단항 연산자
피 연산자의 타입 : int *, double *, char *등의 포인터 타입이되, void *타입에는 사용 불가능.
기능 : 포인터 타입의 변수를 피 연산자로 하며, 해당 변수에 들어있는 주소 값을 찾아가 주소 값에 들어있는 값을 읽어 리턴함.

네이버 카페에 물어봤는대 자세히 적혀있어서 좋았다..만 누가 위키에서 긁어온거같음
다음에는 네이버 카페 같은거 쓰기전에 갓-구글을 먼저 쓰자 정말 갓 이더라..

댓글 없음:

댓글 쓰기