좋아요, 그래서이 이상한 행동을 발견했을 때 C로 어지럽 혔습니다. main 함수에서 배열의 크기를 얻으려면 sizeof 연산자를 사용하고 배열을 다른 함수에 전달하고 sizeof 연산자를 다시 사용하여 초기 값과 다른 수를 얻었습니다. 처음으로 테스트 할 때 올바른 값인 12를 얻었고 두 번째로 테스트했을 때 4를 얻었습니다. 왜 그런지 이해하지 못합니다.C++에서 값이 바뀌고 왜 그런지 알지 못합니다
#include <stdio.h>
#include <ctype.h>
int canPrint(char ch) { return isalpha(ch) || isblank(ch); }
void print_Letters(char arg)
{
if (canPrint(arg))printf("%c==%d \n",arg,arg);
}
void printarg(char ch[])
{
unsigned int value = sizeof(ch);//returns 4
for (int i = 0;i<value; i++)
{
print_Letters(ch[i]);
}
}
int main(int argc, char *argv[])
{
char something[]="work please";
printf("%d \n",sizeof(char));// return 1
printf("%d \n",sizeof(something));//returns 12
printarg(something);
char ch;
scanf_s(" %c",&ch);//used to stop program so that I can read results
return 0;
}
질문은 C 말한다,하지만 당신은 C++ 태그가 있습니다. 어떤거야? – Thebluefish
코드를 제대로 포맷하도록 요청하는 것이 너무 어려울까요? (당신이 다른 사람들에게 그것을 읽으려고하기 때문에) – davmac
죄송합니다. C++ – bordenE