Escolar Documentos
Profissional Documentos
Cultura Documentos
Índice
1História
o 1.1C K&R
o 1.2ANSI C e ISO C
o 1.3C99
o 1.4C11
2Visão geral
o 2.1Tipos de dados
3Relações com C++
4Exemplos
o 4.1Programa Olá Mundo
o 4.2Matemática
o 4.3Estruturas de dados
5Ferramentas de programação
6Ver também
7Referências
8Ligações externas
Ken Thompson e Dennis Ritchie (da esquerda para direita), os criadores das linguagens B e C,
respectivamente
O desenvolvimento inicial de C ocorreu no AT&T Bell Labs entre 1969 e 1973.[9] de acordo
com Ritchie, o período mais criativo ocorreu em 1972. A linguagem foi chamada "C",
porque suas características foram obtidas a partir de uma linguagem anteriormente
chamado de "B", que de acordo com a Ken Thompson era versão reduzida da linguagem
de programação BCPL.[10]
A versão original PDP-11 do sistema Unix foi desenvolvido em assembly. Em 1973, com a
adição dos tipos struct, a linguagem C tornou-se poderosa o suficiente para que a maior
parte do kernel do Unix fosse reescrito em C. Este foi um dos primeiros núcleos de
sistemas operacionais implementados numa linguagem diferente da linguagem Assembly.
Em 1977, foram feitas novas mudanças por Ritchie e Stephen C. Johnson para facilitar a
portabilidade do sistema operacional Unix. O Portable C Compiler de Johnson serviu de
base para várias implementações de C em novas plataformas.[11]
Funções em linha
Remoção de restrições sobre a localização da declaração de variáveis (como em C++)
Adição de vários tipos de dados novos, incluindo o long long int (para minimizar
problemas na transição de 32-bits para 64-bits), um tipo de dados boolean explicito
(chamado _Bool) e um tipo complex que representa números complexos
Vetores de dados de comprimento variável (o vetor pode ter um tamanho diferente a
cada execução de uma função, mas não cresce depois de criado)
Suporte oficial para comentários de uma linha iniciados por //, emprestados da
linguagem C++
Várias funções de biblioteca novas, tais como snprintf()
Vários ficheiros-cabeçalho novos, tais como stdint.h
O interesse em suportar as características novas de C99 parece depender muito das
entidades. Apesar do GCC e vários outros compiladores suportarem grande parte das
novas características do C99, os compiladores mantidos pela Microsoft e
pela Borland suportam pouquíssimos recursos do C99, e estas duas companhias não
parecem estar muito interessadas em adicionar tais funcionalidades, ignorando por
completo as normas internacionais. A Microsoft parece preferir dar mais ênfase ao C++.[16]
Segurança de tipo
Coletor de lixo (mais comum em linguagens interpretadas)
Vetores que crescem automaticamente
Classes ou objetos com comportamento (ver Orientação a objetos)
Clausuras
Funções aninhadas
Sobrecarga de operadores
Meta-programação
Apoio nativo de multithreading e comunicação por rede
Apesar da lista de características úteis que C possui não ser longa, isso não tem sido um
impedimento à sua aceitação, pois isso permite que novos compiladores de C sejam
escritos rapidamente para novas plataformas, e também permite que o programador
permaneça sempre em controle do que o programa está a fazer. Isto é o que por várias
vezes permite o código de C correr de uma forma mais eficiente que muitas outras
linguagens. Tipicamente, só código de Assembly "afinado à mão" é que corre mais
rapidamente, pois possui um controle completo da máquina, mas avanços na área de
compiladores juntamente com uma nova complexidade nos processadores modernos
permitiram que a diferença tenha sido rapidamente eliminada. Uma consequência da
aceitação geral da linguagem C é que frequentemente os compiladores, bibliotecas e
até interpretadores de outras linguagens sejam implementados em C.
C tem como ponto forte a sua eficiência, e é a linguagem de programação preferida para o
desenvolvimento de sistemas e softwares de base, apesar de também ser usada para
desenvolver programas de computador. É também muito usada no ensino de ciência da
computação, mesmo não tendo sido projetada para estudantes e apresentando algumas
dificuldades no seu uso. Outra característica importante de C é o seu código resultante
em Assembly ter funcionamento idêntico ao código fonte, que permite que um projetista
seja capaz de fazer algumas previsões de como o software irá se comportar ao ser
executado.
O ponto negativo de C está na possibilidade do programador cometer erros graças a
liberdade que a linguagem oferece. Por exemplo é possível acessar área de memória que
não pertence a um vetor ao acessar um índice maior que seu tamanho, possibilitando que
ocorra um buffer overflow. Isto acontece em C porque o dever de controlar a memória está
nas mãos do programador. O motivo de C dar total controle para o programador é porque
a linguagem foi projetada para programar o sistema operacional UNIX, onde havia a
necessidade desse controle sobre a forma como o sistema iria funcionar. [3]
int main(void)
{
puts("Olá, Mundo!");
}
int main(void)
{
puts("Olá, Mundo!");
return 0; /* Retorna 0, pois `main` retorna um `int` */
}
/* Nova linha após fechar a chave principal */
int main(void);
int main();
int main(int argc, char *argv[]);
int main(int argc, char **argv);
int main()
{
int a = 2, b = 3;
# include <stdio.h>
struct Pessoa
{
char nome[64]; // vetor de 64 chars para o nome
unsigned short int idade;
char rg[13];
};
int main()
{
struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; //
declaração da variável "exemplo"
Ou, equivalente:
# include <stdio.h>
int main()
{
Pessoa exemplo = {"Filipe", 16, "00.000.000-00"}; // declaração da
variável "exemplo"
getchar();
return 0;
}