C ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como usar ponteiros void na linguagem C - Curso de Linguagem C para iniciantesQuantidade de visualizações: 17003 vezes |
Em dicas desta seção você aprendeu que é possível criar ponteiros para os mais diferentes tipos. Veja:int *ponteiro_int; float *ponteiro_float; double *ponteiro_double; Existe, porém, um tipo de ponteiro que pode ser usado com todos os tipos de dados existentes ou ainda a serem criados. Este tipo é conhecido como void, ou seja, um ponteiro genérico e pode ser declarado da seguinte forma: void *ponteiro; // ponteiro genérico Veja um trecho de código no qual usamos um ponteiro genéríco para apontar para variáveis de diferentes tipos:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int valor = 20;
float valor2 = 5.23;
void *ponteiro; // ponteiro genérico
ponteiro = &valor; // aponta para um inteiro
printf("%d\n", *(int *)ponteiro);
ponteiro = &valor2; // aponta para um float
printf("%0.2f\n", *(float *)ponteiro);
system("PAUSE");
return 0;
}
Uma observação importante é a necessidade de uma conversão explícita (cast) no momento de desreferenciar um ponteiro genéríco. Neste caso ele precisa ser convertido para o tipo de ponteiro sendo usado no momento. Veja:
printf("%d\n", *(int *)ponteiro);
A parte (int *)ponteiro converte o ponteiro genérico em um ponteiro do tipo int e o símbolo * externo é usado para desreferenciar. Se essa conversão não for feita teremos um aviso e erro na maioria dos compiladores. Veja:
printf("%d\n", *ponteiro);
[Warning] dereferencing 'void *' pointer
invalid use of void expression
Embora essa conversão seja necessária quando estamos desreferenciando um ponteiro genérico, podemos abrir mão dela na atribuição de um ponteiro genérico a um ponteiro de um tipo específico:
ponteiro = &valor; // aponta para um inteiro
int *ponteiro_int = ponteiro;
printf("%d\n", *ponteiro_int);
Para finalizar, saiba que as funções malloc() e calloc() retornam ponteiros void, ou seja, ponteiros genéricos que podem ser atribuídos a ponteiros de qualquer tipos. Neste caso, o ponteiro retornado por estas funções aponta para a primeira posição do bloco de memória requisitada. |
C++ ::: Dicas & Truques ::: Input e Output (Entrada e Saída) |
Como exibir a saída em um programa C++ usando o objeto coutQuantidade de visualizações: 973 vezes |
|
O objeto cout, presente no arquivo de cabeçalho iostream, é usado quando precisamos exibir a saída em nossos programas C++. Por ser um objeto da classe ostream, o objeto cout nos oferece muitos métodos, funções e propriedades que permitem um melhor controle sobre a formatação de saída. Como o objeto cout é associada com o fluxo padrão de saída em um programação C++, as informações a serem exibidas na tela são fornecidas a ele por meio do operador de inserção (<<). Veja um trecho de código no qual usamos o objeto cout para exibir o valor da constante matemática PI:
#include <string>
#include <iostream>
#include <math.h>
using namespace std;
int main(int argc, char *argv[]){
// vamos obter o valor da constante PI
double pi = M_PI;
// vamos usar o objeto cout para exibir o resultado
cout << "O valor de PI é: " << pi << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Ao executarmos este código C++ nós teremos o seguinte resultado: O valor de PI é: 3.14159 Vamos ver mais um exemplo? Eis um código C++ que usa o objeto cin para ler dois valor informados pelo usuário e depois usa o objeto cout para exibir a soma dos dois valores:
#include <string>
#include <iostream>
using namespace std;
int main(int argc, char *argv[]){
int a, b, soma;
// vamos ler dois valores
cout << "Informe o primeiro valor: ";
cin >> a;
cout << "Informe o segundo valor: ";
cin >> b;
// vamos somar os dois valores
soma = a + b;
// e agora mostramos o resultado
cout << "A soma dos valores é: " << soma << endl;
system("PAUSE"); // pausa o programa
return EXIT_SUCCESS;
}
Ao executar este código C++ nós teremos o seguinte resultado: Informe o primeiro valor: 8 Informe o segundo valor: 5 A soma dos valores é: 13 |
Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como testar se uma matriz é simétrica em JavaQuantidade de visualizações: 1293 vezes |
|
Uma matriz simétrica é uma matriz que é igual à sua transposta. Para que esta definição faça sentido, apenas podemos considerar matrizes que são quadradas, ou seja, mesma quantidade de linhas e colunas. De forma mais precisa, se A=[aij] é uma matriz de ordem n x n, nós dizemos que A é simétrica quando A=At. Veja um código Java completo no qual nós declaramos uma matriz quadrada de ordem 3, pedimos para o usuário informar os valores de seus elementos e no final informamos se a matriz é uma matriz simétrica:
package estudos;
import java.util.Scanner;
public class Estudos{
public static void main(String[] args){
int n = 3; // ordem da matriz quadrada
int matriz[][] = new int[n][n]; // matriz quadrada
// para efetuar a leitura do usuário
Scanner entrada = new Scanner(System.in);
// vamos pedir para o usuário informar os elementos da matriz
for (int i = 0; i < n; i++){
for (int j = 0; j < n; j++) {
System.out.print("Elemento na linha " + (i + 1) +
" e coluna " + (j + 1) + ": ");
matriz[i][j] = Integer.parseInt(entrada.nextLine());
}
}
// agora verificamos se a matriz é simétrica
boolean simetrica = true;
for (int i = 0; (i < n) && (simetrica); i++) {
for (int j = 0; (j < i) && (simetrica); j++) {
// os elementos em posicoes simetricas sao iguais?
if (matriz[i][j] != matriz[j][i]){
simetrica = false;
}
}
}
// agora mostramos a matriz lida
System.out.printf("\n");
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
System.out.printf("%d ", matriz[i][j]);
}
System.out.printf("\n");
}
if (simetrica){
System.out.printf("\nA matriz informada é uma matriz simétrica.\n");
}
else{
System.out.printf("\nA matriz informada não é uma matriz simétrica.\n");
}
}
}
Ao executar este código Java nós teremos o seguinte resultado: Elemento na linha 1 e coluna 1: 5 Elemento na linha 1 e coluna 2: 1 Elemento na linha 1 e coluna 3: 2 Elemento na linha 2 e coluna 1: 1 Elemento na linha 2 e coluna 2: 6 Elemento na linha 2 e coluna 3: 3 Elemento na linha 3 e coluna 1: 2 Elemento na linha 3 e coluna 2: 3 Elemento na linha 3 e coluna 3: 8 5 1 2 1 6 3 2 3 8 A matriz informada é uma matriz simétrica. |
Ruby ::: Fundamentos da Linguagem ::: Variáveis e Constantes |
Como testar o tipo de uma variável em Ruby usando a função classQuantidade de visualizações: 9478 vezes |
Em algumas ocasiões precisamos retornar o tipo de uma variável (String, FixNum, Float, etc) em Ruby, Isso pode ser feito por meio do uso do método class Object. Veja:# vamos definir uma variável do tipo inteiro valor = 265 # obtemos o tipo da variável valor tipo = valor.class # exibimos o resultado puts "A variável é do tipo " + tipo.to_s Ao executar este código Ruby nós teremos o seguinte resultado: A variável é do tipo Integer |
Nossas 20 dicas & truques de programação mais populares |
|
JavaScript - Como adicionar elementos no início de um array JavaScript usando a função unshift() do objeto Array |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
|
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |




