안녕하세요. C님께 서 모든 nitygrity 것들을 이해하기 위해 열심히 연습하고 있습니다. 구조를 시도하는 동안 값과 참조로 함수에 구조를 전달하려고하는 코드 조각을 작성합니다. 하지만 다음값으로 호출하고 참조로 호출하여 구조화하려고하면 오류없이 코드가 컴파일되지만 쓰레기 값이 인쇄됩니까?
#include <stdio.h>
#include <stdlib.h>
struct foo{
char arr[200];
int x_val;
int y_val;
float result;
};
struct foo my_foo;
int foo_fun(struct foo var); //proto declearation
int foo_fun1(struct foo *var1); //proto declearation
int main()
{
//As I was not getting prover string printed by using function foo_fun1
// I have tried to print directrly calling another ptr here
int i = 0;
struct foo *ptr;
ptr = (struct foo *)malloc(sizeof(struct foo)*10);
ptr->arr[0] = "calculator";
printf("Ptr zero contains a string %s\n",ptr->arr[0]); //even here prints wrong value
i = foo_fun(my_foo);
printf("Result from foo_fun is %d\n",i);
//Expecting this function to print string ....but getting some unexpected result
foo_fun1(&my_foo);
system("pause");
return 0;
}
// pass by value
int foo_fun(struct foo var)
{
int i;
int total = 0;
for(i=0;i<sizeof(var.arr); i++)
{ var.arr[i] = i;
total = total+var.arr[i];
}
var.x_val = 230;
var.y_val = 120;
return total;
}
// pass by reference
int foo_fun1(struct foo *var1)
{
int i = 0;
var1 = (struct foo *)malloc(sizeof(struct foo)*20);
var1->arr[0] = "A";
printf("%s\n",var1->arr);
return 0;
}
@NPE 경고가 오류로 취급되지 않고 그냥 무시되는 이유는 무엇입니까? –
질문 할 때 코드 형식을 지정할 때 최소한의 노력을하십시오. – Lundin