나는 발견하고이 방법 understoof :포인터를 함수 선언에서 매개 변수로 선언하는 3 가지 방법은 무엇입니까?
void PrintString(char *String_Ptr)
{
//Print String
}
나는 함수 선언에서 매개 변수로 포인터를 선언하는 다른 방법을 찾을 수 없습니다.
나는 숙제 질문에서 같은 것을하는 다른 방법이 있다고 믿게되었다.
나는 발견하고이 방법 understoof :포인터를 함수 선언에서 매개 변수로 선언하는 3 가지 방법은 무엇입니까?
void PrintString(char *String_Ptr)
{
//Print String
}
나는 함수 선언에서 매개 변수로 포인터를 선언하는 다른 방법을 찾을 수 없습니다.
나는 숙제 질문에서 같은 것을하는 다른 방법이 있다고 믿게되었다.
질문에 언급 된 것 외에도 몇 가지 가능성이 있습니다.
위의 구문은 String_Ptr
이 배열임을 암시하는 구문에도 불구하고 질문의 버전과 정확히 같습니다. 당신은 당신이 PrintString()
에 전달하려는 문자 (10 개 문자, 말)의 배열의 길이를 알고 있다면, 당신은 또한 배열에 대한 포인터를 전달할 수 있습니다
void PrintString(char String_Ptr[])
{
printf("%s\n", String_Ptr);
}
: 그것은 포인터이다, 아니다
void PrintArray10(char (*Array_Ptr)[10])
{
printf("%s\n", *Array_Ptr); // assuming the array is '\0'-terminated
}
int main(void)
{
char a[10] = "Blah!";
PrintString(a); // first 2 methods
PrintArray10(&a); // 3rd method
return 0;
}
또한 typedef
로 포인터를 위장 할 수 있습니다 : 나는 트릭을 추측하고있어
typedef char* pchar;
void PrintString(pchar String_Ptr)
{
printf("%s\n", String_Ptr);
}
typedef char (*pchararr10)[10];
void PrintArray10(pchararr10 Array_Ptr)
{
printf("%s\n", *Array_Ptr); // assuming the array is '\0'-terminated
}
'PrintArray10'의 인자는 원래의 질문 ('T * char [10]'과 함께'T *')과 같은 형식입니다. 그래서 지금까지 단지 하나의 대안입니다 ... –
저는 ' 나는 이것이 대학 일과 관련이 있지만 숙제가 아니라는 것을 말하고 싶다. 나는이 질문을하지 말고, 나의 이해 포인터와 함수를 개발하려고 노력하고있다. 도움을 주셔서 감사합니다 – theIrishUser
@KerrekSB 인자의 타입은'PrintArray10()'과'PrintString()'에서 다릅니다.'char (*) [10]'은'char *'와 같지 않습니다. 두 개는 다른 방식으로 참조 해제되며 두 개에서 포인터 연산이 다릅니다. 그들에 1을 추가하면 다른 포인터 유형뿐만 아니라 다른 포인터 값도 생성됩니다. –
'const'입니다. – chris
@theIrishUser : 더 이상 사용되지 않는 태그는 잘못된 질문을 쓰지 않아도됩니다. 귀하의 게시물에 약간의 노력을하십시오. 왜 다른 방법, 자신을 시도했는지, 멈춘 곳 등을 믿는 지 설명하십시오. 문제에 대해 구체적으로 설명하십시오. –
@theIrishUser, 예, 대부분의 숙제 문제는 이제 너무 지역화 된 것으로 분류됩니다. 문제가 발생하여 특정 요소로 옮겨 쓰면 때때로 적절하고 재사용 가능한 질문으로 바뀔 수 있습니다. 참고로 http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated – chris