12.010 Basic C: New Features
( not in F77 )
main()
{
float
a; /*
Floating point number
*/
float *ptr_to_a; /* Pointer to a floating point
number */
a = 7.;
/* Write 7. to memory location associated with a */
printf("Value in a ==
%f\n",a);
ptr_to_a = &a; /* Get the address of
the memory location where
*/
/*
assignments to a get written.
*/
printf("Memory address of a (in
hexadecimal) == %X\n",ptr_to_a);
/* Now use pointer to read value stored
at an address
*/
printf("Value stored at address %X
== %f\n",ptr_to_a,*ptr_to_a);
/* Write a new value to an address in
memory */
*ptr_to_a = 3.;
/* What value does a have now? */
printf("Value in a ==
%f\n",a);
/* In C arrays and pointers are the
same thing! */
/* [0] is ptr_to_a + offset of 0*4 bytes */
/* [1] is ptr_to_a + offset of 1*4
bytes
*/
/* etc......
*/
printf("Value stored at address %X
== %f\n",ptr_to_a,ptr_to_a[0]);
}
|
C #include <stdio.h> void afunc(int, int); main() { int i1, i2; i1 = 3; i2 = 4; printf("in
main()"); printf(" i1 == %d,
i2 == %d\n",i1,i2); afunc( i1, i2 ); printf("in
main()"); printf(" i1 == %d,
i2 == %d\n",i1,i2); } void afunc(int a, int b) { printf("in
afunc()"); printf(" a == %d,
b == %d\n",a,b); a = 7; b = 6; printf("in
afunc()"); printf(" a == %d,
b == %d\n",a,b); } |
F77
PROGRAM MAIN
INTEGER I1, I2
I1 = 3
I2 = 4
WRITE(6,'(A,I4,I4)') 'in AFUNC() I1,I2: ',I1,I2
CALL AFUNC(I1, I2)
WRITE(6,'(A,I4,I4)') 'in AFUNC() I1,I2: ',I1,I2
END
SUBROUTINE AFUNC( A, B )
INTEGER A, B
WRITE(6,'(A,I4,I4)') 'in AFUNC() A,B: ',A,B
A = 7
B = 6
WRITE(6,'(A,I4,I4)') 'in AFUNC() A,B: ',A,B END |
|
C #include <stdio.h> void afunc(int *, int *); main() { int i1, i2; i1 = 3; i2 = 4; printf("in
main()"); printf(" i1 == %d,
i2 == %d\n",i1,i2); afunc( &i1, &i2
); printf("in
main()"); printf(" i1 == %d,
i2 == %d\n",i1,i2); } void afunc(int *a, int *b) { printf("in
afunc()"); printf(" a == %d,
b == %d\n",*a,*b); *a = 7; *b = 6; printf("in
afunc()"); printf(" a == %d,
b == %d\n",*a,*b); } |
F77
PROGRAM MAIN
INTEGER I1, I2
I1 = 3
I2 = 4
WRITE(6,'(A,I4,I4)') 'in AFUNC() I1,I2: ',I1,I2
CALL AFUNC(I1, I2)
WRITE(6,'(A,I4,I4)') 'in AFUNC() I1,I2: ',I1,I2
END
SUBROUTINE AFUNC( A, B )
INTEGER A, B
WRITE(6,'(A,I4,I4)') 'in AFUNC() A,B: ',A,B
A = 7
B = 6
WRITE(6,'(A,I4,I4)') 'in AFUNC() A,B: ',A,B END |
|
C #include <stdio.h> typedef struct { float cx;
float cy;
float cz;
int color; }
t_point; void point_print( t_point ); main() { t_point point; point.cx=3.;
point.cy=3.; point.cz=2.; point.color=10; point_print(point); } void point_print(t_point point) { printf(" cx == %f,
cy == %f\n",point.cx,point.cy); printf(" cz == %f,
color == %d\n",point.cz,point.color); } |
F77
PROGRAM MAIN
REAL POINT_COORD(3)
INTEGER POINT_COLOR
POINT_COORD(1) = 3.
POINT_COORD(2) = 3.
POINT_COORD(3) = 2.
POINT_COLOR =
10
CALL POINT_PRINT( POINT_COORD, POINT_COLOR )
END
SUBROUTINE POINT_PRINT( POINT_COORD, POINT_COLOR )
REAL
POINT_COORD(3)
INTEGER POINT_COLOR
WRITE(6,'(A,3F12.4,I4)') 'COORD(1,2,3): ',
& POINT_COORD(1),
& POINT_COORD(2),
& POINT_COORD(3),
& POINT_COLOR END |
#include
< stdio.h >
typedef struct { float cx;
float cy;
float cz;
int color; } t_point;
void point_print( t_point );
main() {
int nel;
t_point *points;
nel=10;
points = (t_point *) calloc(nel,
sizeof(*points) );
for(i=0;i < nel;++i) {
point_print(points[i]);
}
}
void point_print(t_point point) {
printf(" cx == %f, cy ==
%f\n",point.cx,point.cy);
printf(" cz == %f, color ==
%d\n",point.cz,point.color);
}