Вы находитесь на странице: 1из 13

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

C (linguagem de programao)
Origem: Wikipdia, a enciclopdia livre.

C uma linguagem de programao


compilada de propsito geral, estruturada,
imperativa, procedural, padronizada pela
ISO, criada em 1972, por Dennis Ritchie,
no AT&T Bell Labs, para desenvolver o
sistema operacional Unix (que foi
originalmente escrito em Assembly).[1]
C uma das linguagens de programao
mais populares[2] [3] e existem poucas
arquiteturas para as quais no existem
compiladores para C. C tem inuenciado
muitas outras linguagens de
programao,[4] mais notavelmente C++,
que originalmente comeou como uma
extenso para C.

ndice
1 Histria
1.1 C K&R
1.2 ANSI C e ISO C
1.3 C99
1.4 C11
2 Viso geral
2.1 Tipos de dados
3 Relaes com C++
4 Exemplos
4.1 Programa Ol Mundo
4.2 Matemtica
4.3 Estruturas de dados
5 Baixo-nvel
6 Ferramentas de programao
7 Referncias
8 Ver tambm
9 Ligaes externas

C
Paradigma

Programao
estruturada
Programao
imperativa
Programao
procedural

Surgido em

1972

ltima verso C11

(dezembro de 2011)

Criado por

Dennis Ritchie

Estilo de
tipagem:

Esttica, Fraco

Compiladores Borland C, GNU


GCC, Microsoft
Visual Studio, Turbo
C, Watcom C, Tiny C
Compiler
Dialetos:

ANSI C, C99, C11,


ISO C, K&R C

Inuenciada
por

ALGOL 68, Assembly,


B, BCPL, CPL,
Fortran, PL/I

Inuenciou

AWK, BitC, C++, C,


C Shell, D, Euphoria,
Go, Java, JavaScript,
Limbo, Logic Basic,
Objective-C, Perl,
PHP, Python

Licena:

Dependente de
implementao

Histria
1 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

O desenvolvimento inicial de C
ocorreu no AT&T Bell Labs entre 1969
e 1973.[5] de acordo com Ritchie, o
perodo mais criativo ocorreu em
1972. A linguagem foi chamada "C",
porque suas caractersticas foram
obtidas a partir de uma linguagem
anteriormente chamado de " B", que
de acordo com a Ken Thompson era
verso reduzida da linguagem de
programao BCPL.[6]

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

Ken Thompson e Dennis Ritchie (da


esquerda para direita), os criadores das
linguagens B e C, respectivamente.

A verso original PDP-11 do sistema


Unix foi desenvolvido em assembly.
Em 1973, com a adio dos tipos
struct, a linguagem C tornou-se
poderosa o suciente para que a maior parte do kernel do Unix fosse reescrito
em C. Este foi um dos primeiros ncleos de sistemas operacionais
implementados numa linguagem diferente da linguagem Assembly. Em 1977,
foram feitas novas mudanas por Ritchie e Stephen C. Johnson para facilitar a
portabilidade do sistema operacional Unix. O Portable C Compiler de Johnson
serviu de base para vrias implementaes de C em novas plataformas.[7]

C K&R
A linguagem C no teve um sucesso imediato aps a sua criao e o seu uso
cou restrito a alguns laboratrios[8] , mas em 1978 Brian Kernighan e Dennis
Ritchie lanam o livro The C Programming Language.[9] que serviu de tutorial
e mudou a histria da programao em C. De fato essa primeira verso da
linguagem conhecida como "C Kernigham e Ritchie" ou apenas "C K&R". [10]
Esse livro, conhecido pelos programadores de C como "K&R", serviu durante
muitos anos como uma especicao informal da linguagem. A verso da
linguagem C que ele descreve usualmente referida como "K&R C". A
segunda edio do livro cobriu o padro posterior, o ANSI C. K&R C introduziu
as seguintes caractersticas na linguagem:
Biblioteca padro de E/S
Tipo de dados struct
Tipo de dados long int
Tipo de dados unsigned int
O operador =+ foi alterado para +=, e =- para -= (o analisador lxico do
compilador fazia confuso entre i =+ 10 e i = +10. O mesmo acontecia com
=-)
K&R C frequentemente considerado a parte mais bsica da linguagem, cujo
suporte deve ser assegurado por um compilador C. Durante muitos anos,
mesmo aps a introduo do padro ANSI C, K&R C foi considerado o "menor
2 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

denominador comum", em que programadores de C se apoiavam quando uma


portabilidade mxima era desejada, j que nem todos os compiladores eram
actualizados o bastante para suportar o padro ANSI C.
Nos anos que se seguiram publicao do K&R C, algumas caractersticas
"no-ociais" foram adicionadas linguagem, suportadas por compiladores da
AT&T e de outros vendedores. Estas incluam:
Funes void e tipos de dados void *
Funes que retornam tipos struct ou union
Campos de nome struct num espao de nome separado para cada tipo
struct

Atribuio a tipos de dados struct


Qualicadores const para criar um objecto s de leitura
Biblioteca padro, que incorpora grande parte da funcionalidade
implementada por vrios vendedores
Enumeraes
Clculos de ponto-utuante em preciso simples (no K&R C, os clculos
intermedirios eram feitos sempre em double, porque era mais eciente na
mquina onde a primeira implementao do C foi feita)

ANSI C e ISO C
Durante os nais da dcada de 1970, a linguagem C comeou a substituir a
linguagem BASIC como a linguagem de programao de microcomputadores
mais usada. Durante a dcada de 1980, foi adaptada para uso no PC IBM, e a
sua popularidade comeou a aumentar signicativamente. Ao mesmo tempo,
Bjarne Stroustrup, juntamente com outros nos laboratrios Bell, comeou a
trabalhar num projecto onde se adicionavam extras para programao
orientada por objectos linguagem C. A linguagem que eles produziram,
chamada C++, nos dias de hoje a linguagem de programao de aplicaes
mais comum no sistema operativo Windows da companhia Microsoft. A
linguagem C permanece a mais popular no mundo Unix.
Em 1983, o instituto norte-americano de padres (ANSI) formou um comit,
X3J11, para estabelecer uma especicao do padro da linguagem C. Aps um
processo longo e rduo, o padro foi completo em 1989 e raticado como ANSI
X3.159-1989 "Programming Language C". Esta verso da linguagem
frequentemente referida como ANSI C. Em 1990, o padro ANSI C, aps sofrer
umas modicaes menores, foi adotado pela Organizao Internacional para
Padronizao (ISO) como ISO/IEC 9899:1990, tambm conhecido como C89
ou C90. Um dos objetivos do processo de padronizao ANSI C foi o de
produzir um sobreconjunto do K&R C, incorporando muitas das caractersticas
no-ociais subsequentemente introduzidas. Entretanto, muitos programas
tinham sido escritos e que no compilavam em certas plataformas, ou com um
certo compilador, devido ao uso de bibliotecas de funes no-padro e ao fato
de alguns compiladores no aderirem ao ANSI C.

3 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

C99
Aps o processo da padronizao ANSI, as especicaes da linguagem C
permaneceram relativamente estticas por algum tempo, enquanto a
linguagem C++ continuou a evoluir. (em 1995, a Normative Amendment 1
criou uma verso nova da linguagem C mas esta verso raramente tida em
conta.) Contudo, o padro foi submetido a uma reviso nos nais da dcada de
1990, levando publicao da norma ISO 9899:1999 em 1999. Este padro
geralmente referido como "C99" e foi adoptado como um padro ANSI em
maro de 2000. As novas caractersticas do C99 incluem:
Funes em linha
Remoo de restries sobre a localizao da declarao de variveis
(como em C++)
Adio de vrios tipos de dados novos, incluindo o long long int (para
minimizar problemas na transio de 32-bits para 64-bits), um tipo de
dados boolean explicito (chamado _Bool) e um tipo complex que representa
nmeros complexos
Vetores de dados de comprimento varivel (o vetor pode ter um tamanho
diferente a cada execuo de uma funo, mas no cresce depois de
criado)
Suporte ocial para comentrios de uma linha iniciados por //,
emprestados da linguagem C++
Vrias funes de biblioteca novas, tais como snprintf()
Vrios cheiros-cabealho novos, tais como stdint.h
O interesse em suportar as caractersticas novas de C99 parece depender
muito das entidades. Apesar do GCC e vrios outros compiladores suportarem
grande parte das novas caractersticas do C99, os compiladores mantidos pela
Microsoft e pela Borland suportam pouqussimos recursos do C99, e estas duas
companhias no parecem estar muito interessadas em adicionar tais
funcionalidades, ignorando por completo as normas internacionais. A Microsoft
parece preferir dar mais nfase ao C++.[11]

C11
Em 2007, se iniciou o trabalho em antecipao de outra reviso do padro de
C, informalmente chamada de C11 ou C1X. O comit dos padres de C adotou
regras para limitar a insero de novos recursos que no tenham ainda sido
testados por implementaes existentes.[12]
Em dezembro de 2011 foi publicada a verso estvel da especicao, como
ISO/IEC 9899:2011.

Viso geral
C uma linguagem imperativa e procedural, para implementao de sistemas.

4 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

Seus pontos de design foram para ele ser compilado, fornecendo acesso de
baixo nvel memria e baixos requerimentos do hardware. Tambm foi
desenvolvido para ser uma linguagem de alto nvel, para maior
reaproveitamento do cdigo. C foi til para muitas aplicaes que foram
codicadas originalmente em Assembly.
Essa propriedade no foi acidental; a linguagem C foi criada com o objectivo
principal em mente: facilitar a criao de programas extensos com menos
erros, recorrendo ao paradigma da programao procedural, mas
sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao
ter de realizar as caractersticas complexas da linguagem. Para este m, a
linguagem C possui as seguintes caractersticas:
Uma linguagem extremamente simples, com funcionalidades
no-essenciais, tais como funes matemticas ou manuseamento de
cheiros (arquivos), fornecida por um conjunto de bibliotecas de rotinas
padronizada
A focalizao no paradigma de programao procedural
Um sistema de tipos simples que evita vrias operaes que no fazem
sentido
Uso de uma linguagem de pr-processamento, o pr-processador de C,
para tarefas tais como a denio de macros e a incluso de mltiplos
cheiros de cdigo fonte
Ponteiros do maior exibilidade linguagem
Acesso de baixo nvel, atravs de incluses de cdigo Assembly no meio do
programa C
Parmetros que so sempre passados por valor para as funes e nunca
por referncia ( possvel simular a passagem por referncia com o uso de
ponteiros)
Denio do alcance lexical de variveis
Estruturas de variveis, (structs), que permitem que dados relacionados
sejam combinados e manipulados como um todo
Algumas caractersticas teis, que faltam em C, podem ser encontradas em
outras linguagens, que incluem:
Segurana de tipo
Coletor de lixo (mais comum em linguagens interpretadas)
Vetores que crescem automaticamente
Classes ou objetos com comportamento (ver Orientao a objetos)
Clausuras
Funes aninhadas
Sobrecarga de operadores
Meta-programao
Apoio nativo de multithreading e comunicao por rede
Apesar da lista de caractersticas teis que C possui no ser longa, isso no
tem sido um impedimento sua aceitao, pois isso permite que novos
compiladores de C sejam escritos rapidamente para novas plataformas, e
5 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

tambm permite que o programador permanea sempre em controle do que o


programa est a fazer. Isto o que por vrias vezes permite o cdigo de C
correr de uma forma mais eciente que muitas outras linguagens. Tipicamente,
s cdigo de Assembly "anado mo" que corre mais rapidamente, pois
possui um controle completo da mquina, mas avanos na rea de
compiladores juntamente com uma nova complexidade nos processadores
modernos permitiram que a diferena tenha sido rapidamente eliminada. Uma
consequncia da aceitao geral da linguagem C que frequentemente os
compiladores, bibliotecas e at intrpretes de outras linguagens de nvel maior
sejam eles prprios implementados em C.
C tem como ponto forte, a sua ecincia, e a linguagem de programao
preferida para o desenvolvimento de sistemas e softwares de base, apesar de
tambm ser usada para desenvolver programas de computador. tambm
muito usada no ensino de cincia da computao, mesmo no tendo sido
projetada para estudantes e apresentando algumas diculdades no seu uso.
Outra caracterstica importante de C, sua proximidade do cdigo de mquina,
que permite que um projetista seja capaz de fazer algumas previses de como
o software ir se comportar, ao ser executado.
C tem como ponto fraco, a falta de proteo que d ao programador.
Praticamente tudo que se expressa em um programa em C, pode ser
executado, como por exemplo, pedir o vigsimo membro de um vetor com
apenas dez membros. Os resultados so muitas vezes totalmente inesperados,
e os erros, difceis de encontrar.

Tipos de dados
C tem um sistema de tipos semelhante ao de alguns descendentes da
linguagem ALGOL, tais como Pascal. Possui tipos para nmeros inteiros de
vrios tamanhos com e sem sinal, nmeros de ponto utuante, caracteres e
estruturas (structs). C usa extensivamente ponteiros, um tipo muito simples de
referncia que guarda o endereo de memria da varivel. O ponteiro pode
ser desreferenciado, uma operao que busca o objeto que se encontra na
morada da memria que o ponteiro possui, morada essa que pode ser
manipulada atravs de aritmtica de ponteiros. Durante o tempo de execuo,
o ponteiro simplesmente uma morada de mquina tais como aquelas
manipuladas em Assembly, mas em tempo de compilao possui um tipo
complexo que indica o tipo do objecto para onde ele aponta, permitindo que se
verique o tipo de expresses, incluindo ponteiros. O tipo "string" (cadeia ou
linha de texto) de C simplesmente um ponteiro para um vetor de caracteres e
alocao dinmica de memria, descrita abaixo, efetuada atravs de
ponteiros.
Os ponteiros em C possuem um valor reservado especial, NULL, que indica que
no esto a apontar para uma morada. O uso desse valor como morada muito
til na construo de vrias estruturas de dados, mas causa comportamento
no-denido (possivelmente uma falha de sistema) ao ser desreferenciado. Um
ponteiro que possui o valor NULL chamado ponteiro nulo. Os ponteiros so
6 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

declarados (e desreferenciados) com um * (asterisco), portanto o tipo int*


denota um ponteiro para nmero(s) inteiro(s). A linguagem C tambm fornece
um tipo especial de ponteiros, o void*, que se traduz num ponteiro que aponta
para um objeto de tipo desconhecido.
A linguagem C tambm tem apoio em nvel de linguagem para vetores estticos
(de dimenso xa) de tipos. As disposies de tipos podem parecer ter mais
que uma dimenso apesar de serem tecnicamente disposies de disposies
de tipos. Em memria, tais estruturas so posicionadas com as linhas uma
depois da outra (a alternativa seria armazenar os dados em colunas, usado em
outras linguagens). O acesso a disposies de tipos feito atravs de ponteiros
e aritmtica de ponteiros; o nome da disposio tratado como se fosse um
ponteiro que aponta para o incio da disposio. Em certas aplicaes no
razovel usarem-se disposies de tipos de dimenso xa e por isso a alocao
dinmica de memria pode ser usada para criar disposies de tipos de
dimenso varivel.
Como a linguagem C regularmente usada em programao de baixo-nvel de
sistemas, h casos em que necessrio tratar um nmero inteiro como sendo
um ponteiro, um nmero de ponto utuante como sendo um nmero inteiro ou
um tipo de ponteiro como sendo outro. Para estes casos, a linguagem C fornece
a capacidade de "moldagem" (tambm denominado "converso de tipo" ou
"casting"), uma operao que, caso seja possvel, fora a converso de um
objeto de um tipo para outro. Apesar de ser por vezes necessrio, o uso de
converses de tipo sacrica alguma segurana oferecida pelo sistema de tipos.
int
O tipo de dado int (inteiro) serve para armazenar valores numricos inteiros.
Existem vrios tipos de inteiros, cada um de um tamanho diferente
(dependendo do sistema operacional e/ou arquitetura do processador):
int,

pode possuir 16 bits, 32 bits ou 64 bits


short int, deve possuir tamanho de no mnimo 16 bits e no pode ser maior
que int
long int, deve possuir tamanho mnimo de 32 bits
long long int, deve possuir tamanho mnimo de 64 bits
Todos estes tipos de inteiros podem ainda ser declarados precedidos da
clusula unsigned, o que faz com que s suporte nmeros positivos. Isto faz
com que, com o mesmo tamanho, uma varivel suporte mais nmeros positivos
do que um signed (todos os inteiros so signed por omisso).
char
O tipo char ocupa 1 byte, e serve para armazenar caracteres ou inteiros. Isso
signica que o programa reserva um espao de 8 bits na memria RAM ou em
registradores do processador para armazenar um valor (char de tamanho
maior que 8 bits permitido pela linguagem, mas os casos so raros). Com
vetores do tipo char possvel criar cadeias de caracteres (strings).
7 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

oat
O tipo de dado oat serve para armazenar nmeros de ponto utuante, ou
seja, com casas decimais. O padro mais utilizado nos ltimos 10 anos o IEEE
754-1985.
double
O tipo de dado double serve para armazenar nmeros de ponto utuante de
dupla preciso, normalmente tem o dobro do tamanho do oat e portanto o
dobro da capacidade. O padro mais adotado tambm o IEEE 754-1985.
struct
Em C podem ser usadas estruturas (chamados de registos em outras
linguagens de programao). As estruturas so grupos de variveis
organizadas arbitrriamente pelo programador. Uma estrutura pode criar um
novo tipo de varivel caso typedef seja usado em sua declarao.

Relaes com C++


A linguagem de programao C++ foi originalmente derivada do C para
suportar programao orientada a objetos. medida que as linguagens C e
C++ foram evoluindo independentemente, a diviso entre as duas veio a
aumentar. O padro C99 criou um nmero de caractersticas que entram em
conito. Hoje, as principais diferenas entre as duas linguagens so:
- em C++, funes em linha encontram-se no espao global
enquanto que em C encontram-se no espao local. Por outras palavras,
isso signica que, em C++, qualquer denio de qualquer funo em
linha (sem ser a respeito da sobrecarga de funes de C++) tem de estar
em conformidade com a "regra de uma denio" da linguagem C++. Mas
em C, a mesma funo em linha pode ser denida de maneira diferente
em diferentes arquivos (ou cheiros)
A palavra-chave bool, igual usada em C++, em C99 necessita que se
inclua o cheiro-cabealho <stdbool.h> (_Bool est sempre disponvel).
Padres anteriores de C no deniam um tipo booleano e vrios (e
incompatveis) mtodos foram usados para simular um tipo booleano
inline

Algumas caractersticas originalmente desenvolvidas em C++ tambm


apareceram em C. Entre elas encontram-se:
prottipos de funo (com declarao de tipos de parmetros) e remoo
do "int" implcito
comentrios de linha, indicados por //; comentrios de linha terminam
com um carcter de nova-linha
a palavra-chave inline
tipagem mais forte

8 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

Exemplos
Programa Ol Mundo
A seguinte aplicao foi publicada na primeira edio de C de K&R, e tornou-se
no programa de introduo padro da maior parte dos livros sobre C. O
programa envia o texto "Ol, Mundo!" para a sada padro, que normalmente
o console, mas que tambm pode ser um cheiro (ou arquivo), um outro
dispositivo qualquer, ou at mesmo um bit bucket, dependendo de como a
sada-padro mapeada na altura em que o programa executado.
int main(void)
{
puts("Ol, Mundo!");
}

Apesar do programa acima correr corretamente, atualmente origina algumas


mensagens de aviso quando compilado como C ANSI. Essas mensagens podem
ser eliminadas efectuando umas pequenas alteraes no programa original:
# include <stdio.h> /* Pacotes com funes de entrada e sada */
int main(void)
{
puts("Ol, Mundo!");
return 0; /* Retorna 0, pois `main` retorna um `int` */
}
/* Nova linha aps fechar a chave principal */

A primeira linha do programa uma diretiva de pr-processamento #include,


que causa com que o pr-processador substitua aquela linha pela totalidade do
contedo do arquivo qual diretiva se refere. Neste caso o arquivo padro
stdio.h (que contm prottipos de funes para trabalho com entrada e sada)
ir substituir a linha. Os caracteres < e > indicam que o arquivo stdio.h
encontra-se no local em que, quando da congurao do compilador, se deniu
como padro para localizao dos cheiros de incluso (header les,
geralmente com a extenso .h).
A linha (no-vazia) seguinte indica que uma funo denominada main ser
denida. A funo main tem um signicado especial nos programas em C, pois
a funo que inicialmente executada (em ingls, entry point). Os caracteres
{ e } delimitam a extenso da funo. O termo int dene a funo main como
sendo uma funo que retorna um nmero inteiro. O termo void indica que a
funo no aceita parmetros. A funo main, normalmente aceita parmetros,
que so passado pela linha de comando. Os compiladores e sistemas
operacionais atuais reconhecem as seguintes declaraes de main:
int main(void);
int main(int argc, char *argv[]);

9 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

int main(int argc, char **argv);

A linha seguinte "chama", ou executa uma funo chamada puts; o arquivo


includo, stdio.h, contm a informao que descreve a forma como a funo puts
deve ser chamada. Nesta chamada, passado funo printf um nico
argumento, a linha de texto constante "Ol, Mundo!". A funo puts retorna um
valor, um int, mas como no usado, descartado pelo compilador. O comando
return retorna o valor 0 para o sistema, que interpretado pelo mesmo como
que a funo main() foi executada e encerrada com sucesso (sem erros). Por
m, o caracter } indica o m da funo main. Note-se que texto rodeado por /* e
*/ (comentrios de texto) ignorado pelo compilador. Os compiladores que
obedecem norma C99 tambm aceitam como comentrios as linhas de texto
que so precedidos por //.

Matemtica
O seguinte cdigo realiza seis operaes matemticas, adio, subtrao,
multiplicao, diviso, exponenciao e radiciao, e em seguida envia os seus
respectivos resultados para a sada padro (normalmente o console).
# include <math.h> // necessria para pow() e sqrt()
# include <stdio.h> // necessria para printf() e getchar()
int main()
{
int a = 2, b = 3;
printf("%d + %d = %d\n", a, b, a + b);
printf("%d - %d = %d\n", a, b, a - b);
printf("%d x %d = %d\n", a, b, a * b);
printf("%d / %d = %0.1f\n", a, b, (float) a / b); // resultado fracionrio
printf("%d elevado a %d = %0.1f\n", a, b, pow(a, b)); // pow(base, expoente)
printf("raiz quadrada de %d = %0.1f\n", a, sqrt(a));

getchar(); //O uso dessa funo necessria apenas nos sistemas Windows, para manter o terminal (Prompt de co
return 0;
}

Estruturas de dados
No exemplo seguinte, criada uma estrutura composta por 3 elementos de
tipos diferentes. Aps ser declarada uma varivel "x" do tipo struct "y", onde
"y" o nome da estrutura, para se acessar os elementos usa-se a seguinte
sintaxe: x.elemento.
# include <stdio.h>
struct Pessoa
{
char nome[64]; // vetor de 64 chars para o nome
unsigned short int idade;
char rg[13];
};

10 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

int main()
{
struct Pessoa exemplo = {"Fulano", 16, "00.000.000-00"}; // declarao da varivel "exemplo"
printf("Nome: %s\n", exemplo.nome);
printf("Idade: %hu\n", exemplo.idade);
printf("RG: %s\n", exemplo.rg);
getchar(); // desnecessrio, mas comumente utilizado em ambientes windows para "segurar" o terminal aberto
return 0;
}

Ou, equivalente:
# include <stdio.h>
typedef struct Pessoa
{
char nome[64]; // vetor de 64 chars para o nome
unsigned short int idade;
char rg[13];
} Pessoa;
int main()
{
Pessoa exemplo = {"Felipe", 16, "00.000.000-00"}; // declarao da varivel "exemplo"
printf("Nome: %s\n", exemplo.nome);
printf("Idade: %hu\n", exemplo.idade);
printf("RG: %s\n", exemplo.rg);
getchar();
return 0;
}

Baixo-nvel
O exemplo que se segue apresenta cdigo C de baixo-nvel, as funes read e
write. Neste programa vamos ler de N para buf, blocos de bufsize neste caso
1024, para O. Quando n for igual a 0, porque a leitura acabou, sai do ciclo
while e libera a memria ocupada por buf.
# include <unistd.h>
# define bufsize 1024
int main(void)
{
int N,n,O;
char *buf;
buf = (char*) malloc (bufsize);
while(n=read(N, buf, bufsize))
write(O, buf,n);
free(buf);
return 0;
}

11 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

Ferramentas de programao
Bloodshed Dev-C++
IDE (Ambiente de desenvolvimento integrado), como Code::Blocks,
NetBeans e JetBrains CLion
GNU Compiler Collection
Automao de compilao, como make

Referncias
1. History of the C Programming Language (http://www.livinginternet.com
/i/iw_unix_c.htm) (em ingls). livinginternet.com. Consultado em 23 de maio de
2010.
2. Programming Language Popularity (http://www.langpop.com/) (em ingls).
langpop.com. Consultado em 23 de maio de 2010.
3. TIOBE Programming Community Index (http://www.tiobe.com/index.php/content
/paperinfo/tpci/index.html) (em ingls). tiobe.com. Consultado em 23 de maio de
2010.
4. C The Inuence Factor of Many Popular Programming Languages
(http://www.cprogramminglanguage.com/c-the-inuence-factor-of-many-popularprogramming-languages/) (em ingls). cprogramminglanguage.com. Consultado
em 23 de maio de 2010.
5. Ritchie, Dennis M. (janeiro de 1993). The Development of the C Language
(http://cm.bell-labs.com/cm/cs/who/dmr/chist.html). Consultado em 1 de janeiro de
2008. The scheme of type composition adopted by C owes considerable debt to
Algol 68, although it did not, perhaps, emerge in a form that Algol's adherents
would approve of.
6. A Brief History of C (http://www.le.ac.uk/users/rjm1/cotter/page_06.htm)
7. Johnson, S. C.; Ritchie, D. M. (1978). Portability of C Programs and the UNIX
System (http://cm.bell-labs.com/cm/cs/who/dmr/portpap.pdf) (PDF). Bell System
Tech. J. [S.l.: s.n.] 57 (6): 20212048. Consultado em 16 December 2012.
8. Entrevista com Dennis Ritchie, Bjarne Stroustrup e James Gosling
(http://www.gotw.ca/publications/c_family_interview.htm) (em (em ingls)). Java
Report e C++ Report. julho de 2000. Consultado em 3 de junho de 2015.
9. Kernighan, Brian W.; Ritchie, Dennis M (1978). The C Programming Language (em
ingls) (Upper Saddle River, New Jersey: Prentice hall). p.228.
ISBN 0-13-110163-3.
10. Rosangle Hickson. Aprenda a programa em C, C++ e C# (http://books.google.com
/books?id=phxP6FTc0p4C&pg=PA3) 2a ed. Campus [S.l.] p.3.
ISBN 978-85-352-1479-6.
11. Microsoft d mais nfase ao C++ (http://connect.microsoft.com/VisualStudio
/feedback/details/101293/vsnprintf-not-ansi-c99-compliant) (em ingls).
connect.microsoft.com. Consultado em 23 de maio de 2010.
12. Grupo de trabalho do ISO C (http://www.open-std.org/jtc1/sc22/wg14/) (em
ingls). open-std.org. Consultado em 23 de maio de 2010.

Ver tambm
12 de 13

12-05-2016 09:02

C (linguagem de programao) Wikipdia, a e...

https://pt.wikipedia.org/wiki/C_(linguagem_de_...

C++
Linguagem compilada
Linguagem de programao
Linguagem de programao de alto nvel
Lista de linguagens de programao
Unix
Compilador

Ligaes externas
C Progressivo (http://www.cprogressivo.net/) (em portugus)
[[1] (http://user.das.ufsc.br/~jomi/das5334
/Livro%20Aberto%20Aprendendo%20a%20Programar%20naLinguagem%
20C.pdf) Aprendendo a programar -- Programando na Linguagem C -Jaime Evaristo, Universidade Federal de Alagoas] (em portugus)
Pgina ocial do ISO C Working Group (http://www.open-std.org/jtc1/sc22
/wg14/) (em ingls)
C (http://www.dmoz.org/Computers/Programming/Languages/C/) no Open
Directory Project
Obtida de "https://pt.wikipedia.org
/w/index.php?title=C_(linguagem_de_programao)&oldid=45565847"
Categorias: Linguagem de programao C
Linguagens de programao procedurais
Esta pgina foi modicada pela ltima vez (s) 19h56min de 9 de maio de
2016.
Este texto disponibilizado nos termos da licena Creative Commons Atribuio - Compartilha Igual 3.0 No Adaptada (CC BY-SA 3.0); pode
estar sujeito a condies adicionais. Para mais detalhes, consulte as
Condies de Uso.

13 de 13

12-05-2016 09:02

Вам также может понравиться