Lo que pasa es que C convierte automáticamente las variables que pasas por parámetros si es una conversión válida. Te dejo las conversiones en C válidas (no necesitan ser convertidas explícitamente):
Las variables de tipo float y tipo double se representan en memoria de forma diferente. Cuando pasas un double como float en una función, este se convierte automáticamente, pero cuando pasas un puntero a double como puntero a float, el contenido de la memoria no se reinterpreta y por lo tanto no ves ese resultado 'coherente'
Aunque es evidente que tienes que leer para aprender, el hecho de aprender no solo consiste en leer. Una vez leido cada 'tema' de la guía que estés leyendo, sería recomendable que hicieras ejercicios (no sé si eso lo tenías claro, pero yo lo dejo caer).
Yo aprendí C++ con varias páginas, pero una que me gustó fue http://www.conclase.net/. También me gustó http://www.minidosis.org/#/temas porque tiene ejercicios ya propuestos. Además he visto que la página cplusplus tiene una guía de C++. No la he leído, pero esa página me gusta, así que me arriesgaré a recomendar su guía: http://www.cplusplus.com/doc/tutorial/ Además, en esta última página puedes consultar las librerías estándar (te será muy útil).
El problema es cuestión de prioridades. Los corchetes tienen prioridad sobre el asterisco, así que cuando haces *arg1[1] es como si hicieras *(arg1[1]). Para solucionar el problema, tendrías que poner paréntesis para que el asterisco tome prioridad: (*arg1)[1]
Seguramente si le dice al compilador que le ponga las advertencias, le dirá que la función malloc se usa de forma implícita. Algo como esto:
Código:
main.c: In function 'main': main.c:2:14: warning: implicit declaration of function 'malloc' [-Wimplicit-func tion-declaration] int *algo = malloc(sizeof(int)); ^ main.c:2:14: warning: incompatible implicit declaration of built-in function 'ma lloc' main.c:2:14: note: include '<stdlib.h>' or provide a declaration of 'malloc' main.c:2:7: warning: unused variable 'algo' [-Wunused-variable] int *algo = malloc(sizeof(int));
Yo mismo aprendo C para crear videiojuegos (es decir, aplicaciones gráficas). También puedes hacer bases de datos, programas que te faciliten la vida, como programas para resolverte ecuaciones, o sistemas). C tiene prácticamente infinidad de posibilidades, como bien dice AlbertoBSD
Es posible que el enlazador haya enlazado las funciones. El problema con no incluir la librería stdlib es que usas la función implícitamente, y eso es un problema porque el compilador no puede comprobar si los argumentos y el valor de retorno concuerdan. Mejor incluye stdlib y te evitas problemas