Changes in src/tests/references.c [12db9e4:12536d3]
- File:
-
- 1 edited
-
src/tests/references.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/tests/references.c
r12db9e4 r12536d3 49 49 &r1 = x, &&r2 = r1, &&&r3 = r2; 50 50 ***p3 = 3; // change x 51 // ((int&)r3 = 3; // change x, ***r352 51 **p3 = &x; // change p1 53 // ((int*&)&r3) = &x; // change r1, (&*)**r354 52 *p3 = &p1; // change p2 55 // ((int**&)&&r3) = &p2; // change r2, (&(&*)*)*r356 // ((int***&)&&&r3) = p3; // change r3 to p3, (&(&(&*)*)*)r357 53 int y = 0, z = 11, & ar[3] = { x, y, z }; // initialize array of references 58 // &ar[1] = &z; // change reference array element59 // typeof( ar[1] ) p; // is int, i.e., the type of referenced object60 // typeof( &ar[1] ) q; // is int &, i.e., the type of reference61 // sizeof( ar[1] ) == sizeof( int ); // is true, i.e., the size of referenced object62 // sizeof( &ar[1] ) == sizeof( int *); // is true, i.e., the size of a reference63 54 64 55 // test that basic reference properties are true - r1 should be an alias for x … … 85 76 &z1.r = &z1r; 86 77 &z2.r = &z2r; 87 88 78 z1 = z2; 89 90 // test rvalue-to-reference conversion91 {92 struct S { double x, y; };93 void f( int & i, int & j, S & s, int v[] ) {94 printf("%d %d { %g, %g }, [%d, %d, %d]\n", i, j, s.[x, y], v[0], v[1], v[2]);95 }96 void g(int & i) { printf("%d\n", i); }97 void h(int &&& i) { printf("%d\n", i); }98 99 int &&& r = 3; // rvalue to reference100 int i = r;101 printf("%d %d\n", i, r); // both 3102 103 g( 3 ); // rvalue to reference104 h( (int &&&)3 ); // rvalue to reference105 106 int a = 5, b = 4;107 f( 3, a + b, (S){ 1.0, 7.0 }, (int [3]){ 1, 2, 3 } ); // two rvalue to reference108 }109 79 } 110 80
Note:
See TracChangeset
for help on using the changeset viewer.