심사문제 62.9 잘모르겠어요
, 전 수호님이 작성#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
struct Point3D {
float x;
float y;
float z;
};
struct Point3D *allocPoint3D(float x, float y, float z)
{
struct Point3D *pos1 = (Point3D*)malloc(sizeof(struct Point3D));
(pos1-> x, pos1-> y, pos1-> z);
return pos1;
}
int main()
{
float x, y, z;
struct Point3D* pos1;
scanf("%f %f %f", &x, &y, &z);
pos1 = allocPoint3D(x, y, z);
printf("%f %f %f\n", pos1->x, pos1->y, pos1->z);
free(pos1);
return 0;
}
틀린곳을 설명좀요
Re: 심사문제 62.9 잘모르겠어요
, 도장_ 관리자님이 작성https://glot.io/snippets/fjh96jfll0
문의한 코드를 돌리면...
/tmp/599356338/main.c:13:33: error: expected expression struct Point3D *pos1 = (Point3D*)malloc(sizeof(struct Point3D));C 언어에서 malloc 앞에 형변환을 하는 것은 문법 에러입니다.
C++에서는 malloc 앞에 형변환을 해줘야 하지만, C 언어는 아닙니다. 대다수 C 언어 입문서가 여기서 틀렸습니다. C 언어 표준과 반대로 에러 나는 코드를 가르치죠.
/tmp/599356338/main.c:14:11: warning: expression result unused [-Wunused-value] (pos1-> x, pos1-> y, pos1-> z); ~~~~ ^ /tmp/599356338/main.c:14:21: warning: expression result unused [-Wunused-value] (pos1-> x, pos1-> y, pos1-> z); ~~~~ ^ /tmp/599356338/main.c:14:31: warning: expression result unused [-Wunused-value] (pos1-> x, pos1-> y, pos1-> z); ~~~~ ^C 언어에는 이런 문법이 없습니다.
x, y, z = 1, 2, 3
이런 문법을 지원하는 언어로는 파이썬이 있습니다.
C 언어는 아닙니다.