- #include <stdio.h> 
-   
- void func(int *p); 
- void funcar(int ar[]); 
-   
- int main(void) { 
- 	int a[10] = {0,1,2,3,4,5,6,7,8,9}; 
- 	int *b; 
- 	b = a;						/* Valid */ 
- 	// printf("%d", *b[1]); 	// [X]Wrong, error: invalid type argument of unary ‘*’ (have ‘int’) 
- 	printf("%d\n",-  b [1]);		// array name/label itself acts as the pointer to array
 
- 	printf("%d\n", *(- b +2));	// another way of representing
 
- 	int q[10]; 
- 	/* However, This is not valid */ 
- 	// q = a;			// [X]Wrong 
-   
- 	int c = 10; 
- 	// int *d = c;		// [X]Wrong 
- 	int *d; 
- 	d = &c; 
- 	// int *d = &c;		// alternate way to assign, confusing 
- 	// int *b = &a[0]; 
-   
- 	char *str = "Ninechars"; 
- 	printf("%p\n",-  str );	// address of first char of str
 
- 	printf("%p\n",-  str +1);	// address of second char of str
 
- 	// printf("%s\n", str[1]);	// [segfault] warning: format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’ [TODO] 
- 	printf("%p\n", &- str );	// address to head of the string? NO, address of the pointer var str
 
- 	printf("%p\n", &- str +1);	// [TODO], difference of 8bytes b/w this and previous address value? [WHY]?
 
- 	printf("%d\n", *- str );	// what integer is this? -> whatever can be made from 'N'=78
 
- 	printf("%d\n", *(- str +1));	// 'i'=105, but why is it taking single byte ints [TODO]
 
- 	printf("%ld\n", sizeof(1));	// 4 bytes, as expected 
- 	// printf("%s\n", *str);	// [?]Wrong, [HOW][WHY], format ‘%s’ expects argument of type ‘char *’, but argument 2 has type ‘int’[TODO] 
- 	// int *f[5] = {213,214,215,216,217};	// [X]Wrong, this is array of pointers 
- 										// so the array should contain ptrs not values 
- 	char *str2[3] = {"A","B","C"}; 
- 	// printf("%s\n", str2);	// [X]Wrong, expects argument of type ‘char *’, but argument 2 has type ‘char **’ 
-   
- 	int * i, * l, * s;		// three pointers-to-int 
-  	int * x, y, z;			// x is a pointer, y and z are ints 
-   
- 	func(a); 
- 	funcar(a);	// passing the entire array 
- 	return 0; 
- } 
-   
- void func(int *p)	// passing an array as a pointer 
- { 
- } 
-   
- void funcar(int ar[])	// passing an entire array, not memory efficient 
- { 
- 	// ^even if I give ar[4] as func arg it still displays ar[5] correctly 
- } 
				I2luY2x1ZGUgPHN0ZGlvLmg+Cgp2b2lkIGZ1bmMoaW50ICpwKTsKdm9pZCBmdW5jYXIoaW50IGFyW10pOwoKaW50IG1haW4odm9pZCkgewoJaW50IGFbMTBdID0gezAsMSwyLDMsNCw1LDYsNyw4LDl9OwoJaW50ICpiOwoJYiA9IGE7CQkJCQkJLyogVmFsaWQgKi8KCS8vIHByaW50ZigiJWQiLCAqYlsxXSk7IAkvLyBbWF1Xcm9uZywgZXJyb3I6IGludmFsaWQgdHlwZSBhcmd1bWVudCBvZiB1bmFyeSDigJgq4oCZIChoYXZlIOKAmGludOKAmSkKCXByaW50ZigiJWRcbiIsIGJbMV0pOwkJLy8gYXJyYXkgbmFtZS9sYWJlbCBpdHNlbGYgYWN0cyBhcyB0aGUgcG9pbnRlciB0byBhcnJheQoJcHJpbnRmKCIlZFxuIiwgKihiKzIpKTsJLy8gYW5vdGhlciB3YXkgb2YgcmVwcmVzZW50aW5nIAoJaW50IHFbMTBdOwoJLyogSG93ZXZlciwgVGhpcyBpcyBub3QgdmFsaWQgKi8KCS8vIHEgPSBhOwkJCS8vIFtYXVdyb25nCgkKCWludCBjID0gMTA7CgkvLyBpbnQgKmQgPSBjOwkJLy8gW1hdV3JvbmcKCWludCAqZDsKCWQgPSAmYzsKCS8vIGludCAqZCA9ICZjOwkJLy8gYWx0ZXJuYXRlIHdheSB0byBhc3NpZ24sIGNvbmZ1c2luZwoJLy8gaW50ICpiID0gJmFbMF07CglwcmludGYoIiVwICVkXG4iLCAmYywgKmQpOwoJcHJpbnRmKCIlcCAlZFxuIiwgZCwgKmQpOwoJCgljaGFyICpzdHIgPSAiTmluZWNoYXJzIjsKCXByaW50ZigiU3RhcnRcbiIpOwoJcHJpbnRmKCIlc1xuIiwgc3RyKTsKCXByaW50ZigiJXBcbiIsIHN0cik7CS8vIGFkZHJlc3Mgb2YgZmlyc3QgY2hhciBvZiBzdHIKCXByaW50ZigiJXBcbiIsIHN0cisxKTsJLy8gYWRkcmVzcyBvZiBzZWNvbmQgY2hhciBvZiBzdHIKCS8vIHByaW50ZigiJXNcbiIsIHN0clsxXSk7CS8vIFtzZWdmYXVsdF0gd2FybmluZzogZm9ybWF0IOKAmCVz4oCZIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSDigJhjaGFyICrigJksIGJ1dCBhcmd1bWVudCAyIGhhcyB0eXBlIOKAmGludOKAmSBbVE9ET10KCXByaW50ZigiJXBcbiIsICZzdHIpOwkvLyBhZGRyZXNzIHRvIGhlYWQgb2YgdGhlIHN0cmluZz8gTk8sIGFkZHJlc3Mgb2YgdGhlIHBvaW50ZXIgdmFyIHN0cgoJcHJpbnRmKCIlcFxuIiwgJnN0cisxKTsJLy8gW1RPRE9dLCBkaWZmZXJlbmNlIG9mIDhieXRlcyBiL3cgdGhpcyBhbmQgcHJldmlvdXMgYWRkcmVzcyB2YWx1ZT8gW1dIWV0/CglwcmludGYoIiVkXG4iLCAqc3RyKTsJLy8gd2hhdCBpbnRlZ2VyIGlzIHRoaXM/IC0+IHdoYXRldmVyIGNhbiBiZSBtYWRlIGZyb20gJ04nPTc4CglwcmludGYoIiVkXG4iLCAqKHN0cisxKSk7CS8vICdpJz0xMDUsIGJ1dCB3aHkgaXMgaXQgdGFraW5nIHNpbmdsZSBieXRlIGludHMgW1RPRE9dCglwcmludGYoIiVsZFxuIiwgc2l6ZW9mKDEpKTsJLy8gNCBieXRlcywgYXMgZXhwZWN0ZWQKCS8vIHByaW50ZigiJXNcbiIsICpzdHIpOwkvLyBbP11Xcm9uZywgW0hPV11bV0hZXSwgZm9ybWF0IOKAmCVz4oCZIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSDigJhjaGFyICrigJksIGJ1dCBhcmd1bWVudCAyIGhhcyB0eXBlIOKAmGludOKAmVtUT0RPXQoJcHJpbnRmKCJFbmRcbiIpOwoJLy8gaW50ICpmWzVdID0gezIxMywyMTQsMjE1LDIxNiwyMTd9OwkvLyBbWF1Xcm9uZywgdGhpcyBpcyBhcnJheSBvZiBwb2ludGVycwoJCQkJCQkJCQkJLy8gc28gdGhlIGFycmF5IHNob3VsZCBjb250YWluIHB0cnMgbm90IHZhbHVlcwoJY2hhciAqc3RyMlszXSA9IHsiQSIsIkIiLCJDIn07CglwcmludGYoIiVzXG4iLCAqc3RyMik7CglwcmludGYoIiVzXG4iLCAqKHN0cjIrMSkpOwoJLy8gcHJpbnRmKCIlc1xuIiwgc3RyMik7CS8vIFtYXVdyb25nLCBleHBlY3RzIGFyZ3VtZW50IG9mIHR5cGUg4oCYY2hhciAq4oCZLCBidXQgYXJndW1lbnQgMiBoYXMgdHlwZSDigJhjaGFyICoq4oCZCgoJaW50ICogaSwgKiBsLCAqIHM7CQkvLyB0aHJlZSBwb2ludGVycy10by1pbnQKIAlpbnQgKiB4LCB5LCB6OwkJCS8vIHggaXMgYSBwb2ludGVyLCB5IGFuZCB6IGFyZSBpbnRzCgoJZnVuYyhhKTsKCWZ1bmNhcihhKTsJLy8gcGFzc2luZyB0aGUgZW50aXJlIGFycmF5CglyZXR1cm4gMDsKfQoKdm9pZCBmdW5jKGludCAqcCkJLy8gcGFzc2luZyBhbiBhcnJheSBhcyBhIHBvaW50ZXIKewoJcHJpbnRmKCIlZFxuIiwgcFswXSk7CglwcmludGYoIiVkXG4iLCBwWzddKTsKfQoKdm9pZCBmdW5jYXIoaW50IGFyW10pCS8vIHBhc3NpbmcgYW4gZW50aXJlIGFycmF5LCBub3QgbWVtb3J5IGVmZmljaWVudAp7CgkvLyBeZXZlbiBpZiBJIGdpdmUgYXJbNF0gYXMgZnVuYyBhcmcgaXQgc3RpbGwgZGlzcGxheXMgYXJbNV0gY29ycmVjdGx5CglwcmludGYoIiVkXG4iLCBhclszXSk7CglwcmludGYoIiVkXG4iLCBhcls1XSk7Cn0=