
paulo1205
(usa Ubuntu)
Enviado em 05/04/2013 - 03:08h
agmartins.adm escreveu:
Olá Paulo!
Amigo, você resolveu meu problema. Era apenas o %s... :P
Na verdade, estou ciente destes erros. É que este não é um programa realmente, é apenas para testar o funcionamento de structs com ponteiros.
1) Não estou usando um nome de tipo por que o professor não quer que use (já que ele se torna uma variável global, e o professor disse que não quer que trabalhemos com variáveis globais neste caso).
Isso está errado. Nome de tipo é uma coisa, e variável global é outra completamente diferente. A declaração
typedef struct num {
char nome[30];
int a;
} num;
não cria uma só variável, mas especifica, isto sim, um tipo "
num", equivalente a "
struct num", que ficará visível no espaço de nomes global. Não é justamente para isso que se declara um tipo?
Se ele não quiser que você use
typedef, estão você teria de mudar a declaração de
numero, dentro da função
main(), passando a declará-la com o tipo "
struct num".
2) Neste momento estava usando o &numero apenas como teste, normalmente eu uso o numero.nome mesmo...
Porém, mais uma vez o professor vai querer que usemos o formato -> de acesso dos campos na struct.
Mesmo que seja desse modo artificial? Acho que não.
As semelhanças entre ponteiros e arrays que existem em C e C++ devem ser usadas de modo proveitoso, não de modo contraproducente. Com qualquer array, você pode sempre escrever "
*(array+i)" em lugar de "
array[i]", mas seria uma tolice fazê-lo porque seria escrever mais caracteres, usando três operações explícitas no lugar de apenas uma. O caso da notação que você usou é análogo, em que se tem mais trabalho sem ganho algum.
Haverá espaço no seu programa para usar o operador "->" à vontade se você percorrer os membros do array alocado usando ponteiros, em lugar de usar explicitamente índices em sequência. Isso é comum e muitas vezes mais eficiente, mas vai depender de o que você tiver de fazer no programa.
Eu sei que existem professores mal-preparados, que cobram coisas sem sentido porque é a forma que encontram de tentar mostrar autoridade acadêmica por lhes faltar autoridade intelectual. Se for o seu caso, não vou ser eu a lhe dizer para sacrificar sua nota. Mas habitue-se a usar boas práticas quando não estiver sob o controle do eventual professor porcalhão.