+ 4
Why this code is working without any error and without any function definition.
11 Respostas
+ 6
hello đ my question is why this code working
" WITHOUT FUNCTION DEFINITION " ???????
+ 6
hello coffee â cup girl excuse me
+ 5
but by the rules it should be above the main function coffee girl
+ 3
U have define function properly see step by step where u write main function here u calling function in next steps after Variables decleration see this line
a=func1();
+ 3
Ashutosh k. The thing you write above the main function is the "prototype" and it is not required, while the "declaration" with the relative body is necessary.
The compiler do its job from the top, down to the bottom of the code.
The prototype gives the compiler a way to check if you are using your function in the proper way.
Let's say that you do not write any prototype before the main. Now if you declare a function (after the main) that recieves an int as argument, but in the main you used this function giving it a char value, then the compiler wouldn't tell you anything, and yet your program would not function properly.
So you use prototypes for your own sake, not because the program requires them in order to be executed.
If you use the prototype, it needs to be coherent with the declaration in number, type and order of arguments and in returned type. Otherwise the compiler will give you errors.
+ 2
Checkout i fixed your bug may be it will work without any errors
#include<stdio.h>
#define row 3
#define col 4
int main()
{
int i,j,*a,*fun1();
a=fun1();
printf("array a[][] in main():\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
{
printf("%d ",*(a+i*col+j));
printf("\n");
}
}
return 0;
}////---main
int *fun1()
{
static int a[4][3]={{1,2,3,},{4,5,6},{7,8,9},{0,1,6}};
int i,j;
printf("Array a[][] in fun 1():\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
printf("%d ",a[i][j]);
printf("\n");
}
return (int*)a;
}///----fun 1
+ 2
Ashutosh k.
Rule says "declare it before you using".
In your code you declared int *fun1(); before you using so no error.
If you write before main function and since you always use it main so it's already declared and defined so no problems in linking...
If you write after main, then atleast you have add prototype before main because compilation happens from top to bottom and all declaration pushed to stack then usages are bind to declaration at compile time so if no prior declaration then it give you warning eventhough binding happens at runtime but not give surity if ambiguity.. So rule tells add prototype or declare before using it.
You have function pointer declaration so it is similar as prototyping. So it is error free.
Edit : (you have other warning and given all removed warnings code already by @âšïžTEJAS MK-82âšïž. So I adding to that one)
+ 2
ranim you need to create a new question rather than ask something in the comment section of another question. And you are more likely to get answers if you write it in English.
+ 1
the compiler generates the proper code, seems to be
+ 1
Hi! This is my first day in that app , so hoping that you are guys be nice to me .
I have a question , comment écrire un programme qui permet de saisir une capacité CD en Octet puis la convertir en GO et en MO
+ 1
#include<stdio.h>
#define row 3
#define col 4
int main()
{
int i,j,*a,*fun1(),*p;
a=fun1();
printf("array a[][] in main():\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
printf("%d ",*(a+i*col+j));
printf("\n");
}
return 0;
}////---main
int *fun1(include )
{
static int a[row][col]={1,2,3,4,5,6,7,8,9,0,1,6};
int i,j;
printf("Array a[][] in fun 1():\n");
for(i=0;i<row;i++)
{
for(j=0;j<col;j++)
printf(fun1 ",a[i][j]);
printf("\n");
}
return (int*)a;
}///----fun 1