2010-12-04 8 views
14

Actualmente soy un estudiante de primer año en la universidad, con especialización en CS. Estoy a punto de terminar mi clase de "Introducción a la Programación de Computadoras". Me gusta y siento que estoy aprendiendo un poco.Tutorial sobre punteros C y matrices desde el punto de vista de Java

Hace un par de días, leí el The Peril Of Java Schools de Joel. "¿Una lista enlazada?" Pensé, "esos ni siquiera son difíciles. Ya hemos hecho un montón de ésos en la clase en la que estoy ahora". Lo cual es correcto, porque en Java, no son tan difíciles. Pero de todos modos, traté de escribir uno en C un intento.

¡Y es TAN DIFÍCIL!

Joel tenía razón, creo ... Java trata con tantas pequeñas cosas pequeñas que no es tan difícil. Pero estoy decidido a superar la Java-tude de mi escuela y aprender a escribir esta lista enlazada de dang en C.

Así que supongo que, en lugar de tratar de hacer muchas y pequeñas preguntas, me pregunto, ¿verdad? Alguien sabe de un buen (& gratis) tutorial en línea para aprender C? Específicamente, aprender a tratar con punteros y todos esos símbolos (&, *, **, [] y cómo funcionan juntos) Me gustaría pensar que ya soy bastante hábil en Java, así que no necesito los tutoriales. sobre cómo escribir un "¡Hola mundo!" programa. Pero definitivamente no estoy listo para entrar en cualquier C o C++ súper avanzado, porque todo lo que sé es Java.

Cualquier ayuda apreciada!

+9

El problema con los tutoriales en línea es que casi siempre son de muy mala calidad y tienen errores técnicos perniciosos y otros errores, o recomiendan codificación de estilo generalmente pobre (no estoy tan familiarizado con los recursos de C en línea como con C++, pero para C++, no hay buenos tutoriales gratuitos en línea). Si desea aprender C y cómo funcionan los punteros y arreglos y otros aspectos del lenguaje, hágase un favor y [obtenga un buen libro para principiantes] (http://stackoverflow.com/questions/562303/the-definitive-c- libro-guía-y-lista). –

+1

No sé que se puede obtener nada especificando "desde el punto de vista de Java" porque Java no tiene ninguna analogía obvia con un puntero ... probablemente solo quiera una [buena guía general de punteros] (http : //stackoverflow.com/q/4016765/2509), y hay [son] (http://stackoverflow.com/questions/5727/what-are-the-barriers-to-understanding-pointers-and-what- se puede hacer para superar) preguntas para eso [ya] (http://stackoverflow.com/questions/2271490/c-pointers-good-tutorials). – dmckee

+0

Sin embargo, [El tutorial de sugerencias de Alf Steinbach] (https://docs.google.com/fileview?id=0B2oiI2reHOh4M2MzNzYwYzQtMGZkNC00NTljLWJiM2UtOGI0MmRkMTMyZGY4) podría serle útil. Está bien escrito, pero se enfoca en C++, no en C. Sin embargo, todavía necesitas un buen libro. –

Respuesta

6

Algunos tutoriales:

Algunos puntero buenas respuestas que podrían ayudar:

La primera es una muy buena lectura acerca de los punteros y sus trampas, si usted puede conseguir más allá de la sintaxis de Pascal.

+1

Mejor como comentario. – dmckee

+0

@dmckee es un poco difícil de presentar una lista de enlaces en un comentario hmm? –

+0

Lo hago todo el tiempo. Mi comentario sobre esta pregunta contiene 3 enlaces, y a veces hago muchos más. use la sintaxis en línea '[' text '] (' link ')'. Existe el límite de longitud, por supuesto, pero puede obtener mucho en 600 caracteres. – dmckee

3

Compruebe y vea si su plan de estudios requiere la Programación de Sistemas. Suele ser un curso de segundo año de 300 niveles, y estoy inscrito para el próximo semestre. Está muy involucrado trabajando con C + GCC en Unix.

Revise su biblioteca del departamento de CS, si existe. Recogí una copia de K & R para trabajar durante las vacaciones de invierno.

+2

No hay mejor consejo que recoger una copia del libro C de K & R. Es pequeño, conciso y claro. – gbc

+1

K & R se refiere a este libro: El lenguaje de programación C de Kernighan y Ritchie - http://www.amazon.com/Programming-Language-2nd-Brian-Kernighan/dp/0131103628/ref=sr_1_1?ie=UTF8&qid=1291498331&sr= 8-1 –

1

This es para C++, no C; pero hasta aproximadamente el Capítulo 3.7 habla de cosas a nivel de máquina de una manera que es útil para los aspirantes a programadores en C.

+0

No he visto ese sitio web anteriormente, pero después de un breve vistazo, diría que no debería recomendarse como un buen recurso de C++. No discute las excepciones en absoluto, por lo que tampoco analiza RAII o punteros inteligentes.Evita los contenedores STL propios que son "más fáciles de usar". Aparentemente, el autor no ha programado mucho C++ porque afirma "porque los identificadores de biblioteca estándar se usan con tanta frecuencia, es molesto tener que decir' std :: 'cada vez que queremos referirnos a uno de ellos". No sé lo que dice el libro sobre los indicadores, pero no confiaría en eso. –

+0

@James atraviesa excepciones más adelante, y muestra el uso de la expresión de sobre-cuerpo para administrar clases polimórficas. Los conceptos son introducidos a medida que se vuelven necesarios. Me resulta molesto escribir 'std ::' cada vez, también, y eso es precisamente porque he escrito mucho. La mitad del punto de tener un sistema de espacio de nombres real es poder soltar los prefijos cuando * no * causa un conflicto, IMO. En serio, por favor no lo juzgues tan rápido. –

0

Existen numerosas guías en Internet para obtener información sobre punteros. Aquí hay uno: http://pweb.netcom.com/~tjensen/ptr/pointers.htm que he usado.

También voy a sugerirte este libro: Hacking, the Art of Exploitation 2nd Ed.

Este libro no lo convertirá en un "hacker". Nada más que mucha ingeniería inversa/estudiar código binario, prueba y error, etc. va a hacer eso. Sin embargo, le presenta cómo comienza a hacer estas cosas y eso se reduce a una comprensión fundamental de cómo funciona C, incluidos los indicadores. Su introducción al ensamblado/C es una de las mejores que he visto porque le muestra varios ejemplos de C y cómo investiga qué está pasando con gdb, una herramienta de depuración de línea de comandos. De esa manera puedes ver la C y ver el ensamblaje. Esto incluye una comprensión fundamental de lo que son los indicadores.

Este libro tendrá como efecto secundario una introducción a la pila y al montón, estructuras de datos, etc. En resumen, leer las secciones de introducción le proporcionará muchos beneficios para el resto de su curso.

Cuestiones relacionadas