Я только что написал небольшую программу, чтобы играть со структурами. Эта программа отлично работает, но у меня мало сомнений в одном утверждении. Может кто-нибудь прояснить меня, пожалуйста?Передача структуры между функцией
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
struct mystr
{
int a;
float b;
char a1[10];
};
void fun(struct mystr *ptr1)
{
struct mystr *ptr;
ptr=malloc(sizeof(struct mystr));
ptr->a=10;
ptr->b=1662.3456;
strcpy(ptr->a1,"xxxxxx");
*ptr1=*ptr; /* <<<<<<<<<<<- This assignment is fine? */
free(ptr);
}
void main()
{
struct mystr var1;
memset(&var1,0,sizeof(struct mystr));
fun(&var1);
printf("my data is %4d,%10.3f,%5s\n",var1.a,var1.b,var1.a1);
}
Я знаю, что могу просто передать указатель на веселье и распечатать его бесплатно. Но я просто хотел, чтобы эта программа была таким образом (передавая адрес переменной структуры и заполняя ее). Спасибо заранее.
Да, это - на самом деле, вы могли бы использовать ptr1 вместо PTR и не заморачиваться с таНос и свободной – cup
всегда проверять (! = NULL) возвращаемого значения из таНос() и семейства функций. В противном случае любое разыменование возвращаемого значения приведет к доступу к адресам вокруг 0. Это неопределенное поведение и может/приведет к событию сбоя seg – user3629249