최근에 저는 C 언어로 앱을 작성하기 시작했습니다. 아래 코드에서 합계 연산자에 문제가 있습니다. 내가 프로그램을 시작하고 예를 들어 줄 때. 4에서 int a; 및 6에서 int b; 그리고 나는 + b 마녀가 나에게 22를 주길 원합니다. 여기에 코드가 있습니다. 먼저 내 구조를 정의합니다.
struct student {
int a;
int *b;
}*s1;
그런 다음 값과 다른 단계를 스캔합니다.
int sum, x, y;
s1 = malloc(sizeof(struct student));
scanf("%d", &x);
scanf("%d", &y);
s1->a = x;
s1->b = y;
sum = (s1->a) + (s1->b);
printf("SUM: %d", sum);
또한 나는 * (s1-> a) 테스트하고 여전히 문제가 있습니다. 감사.
중요 :이 문제를 해결할 수있는 다른 방법이나이 알고리즘을 코딩하는 더 나은 방법을 제안하고 싶지는 않습니다.이 코드가 제대로 작동하지 않는 이유와 해결 방법을 알고 싶습니다. 사실 나는 'b'를 포인터로 유지하고 싶다!
int *b
귀하의 구조에서 int
. 코드를 수정하려면 다음 y
과 같이 포인터에 주소를 할당 할 수 있습니다 .
s1->a = x;
s1->b = &y;
sum = (s1->a) + *(s1->b); //asterisk dereferences the pointer and gets the value stored in the memory address
printf("SUM: %d", sum);
또는 변수 b
로 선언 int
하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다