#include
int main()
{
int count = 0;
int * b = NULL;
b = (int*)malloc(4 * sizeof(int));
while (*b++)
{
if (count == 4) break;
*b = 5;
printf("%d", *b);
count++;
system("pause");
}
free(b);
system("pause");
return 0;
}
될꺼 같은데 왜 오류가 날까?
#include
int main()
{
int count = 0;
int * b = NULL;
b = (int*)malloc(4 * sizeof(int));
while (*b++)
{
if (count == 4) break;
*b = 5;
printf("%d", *b);
count++;
system("pause");
}
free(b);
system("pause");
return 0;
}
뭔 오류
wntdll.pdb 로드되지 않음 요거
NULL은 왜 넣은거임?
ㄴ 교과서에서 배울때 int * b = (int*)malloc(4 * sizeof(int)); 보단 널로 비우고 그 밑에서 정의하라 해서 격식 차원으로
에휴 while문 안에 조건식을 왜 저따구로 함? 교수가 저렇게 하라했냐?
나순간 이게 뭔뜻인지 존나해석하다가 아 설마 주소연산하는건가?.. 했는데 맞음?
이거 외국 책중에서 유명한 K.N.K 꺼 보고 활용하는건데 우리교수님은 저런거 보다는 좀더 실용적인걸 알려주지 저런 젓간은건 안ㅇ알려준다
주소연산을해서 한칸씩 이동한다음 5를 대입하려는거같은데 저렇게하면 주소연산이아니라 쓰레기값에 1을 더하는거잖아..
*a++ 1번은 *a로 a메모리 활용하다가 2번째에 a++ 메모리에 ++ 해서 +4byte만큼 늘어남 님말이 맞을 듯
쓰레기 값은 안나온다 결과는 잘 돌아가는데 와일 문을 빠져나갈때 이상한 오류가 떠서 그러지 ㅜㅜ 5555 잘나와요
내가 대충 수정해봤는데 일단 변수 i를 추가해서 0으로 초기화한다음 조건문을 while(b = b + i)로바꾸면 에러안남
주소를 연살할거면 *b++이 아니라 b++로해야지
ㅇㅎ 그래도 도와줘서 거마워 나는 for문을 최대한 압축시켜서 돌릴수 있는 좋은 방법을 찾는중이라 다른 변수를 더하면 무의미해져 ㅎㅎ
코드 진짜 애미뒤졌네 - dc App
ㄴ짧지만 강려크함
진짜 이 많은 코더들중에 C고수가 진짜 없네..
int main(){ int count = 0; int *b = (int *)malloc(sizeof(int) * 4); while (b + count) { *b = 5; printf("%d", *b); count++; if (count == 4) break; [...]; } free(b); [...];}
너가 원하는 결과일지는 모르겠지만 변수 추가안하고 에러도 없음
고수가 없는 게 아니라 니 질문에 답해줄 호구가 없는 거임
일단 결론만 말하자면 저 코드를 실행할 경우에는 while문을 잘 돌다가 count == 3에서 출력을 하고 오류가 나는데, while문 조건인 *b++은 *(b++)이랑 같은거임 그래서 while문에 처음 들어올때 이미 주소가 1칸 이동한 상태에서 시작하는거임 그러므로 int 4개 받을 만큼 할당했는데 실제로 시작 위치가 1칸 버리고 시작하니까 count 3까지 하고 오류가 나는거임
할당 공간을 5 * sizeof(int)로 바꾸면 오류 없이 잘 돌아감
모두둘 커어어마어!