Beuleal 4 Denunciar post Postado Maio 18, 2012 olá Galera, é uma duvida boba q nao esta me deixando sair do lugar. Onde esta o erro nesse código na definicao da matriz? char fabricantes [10][10] ={"BMW","Porche","Ferrari","Audi","Chevolet","Fiat","Toyota","Honda","Hyundai","VW"}; char modelos[4][10][10]; modelos[1][10][10]={"X1","X3","Z4","M3"}; deixe me explicar, cada fabricante terá 4 modelos, cada modelo tera no máximo 10 caracteres! Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Igor F. 1 Denunciar post Postado Maio 18, 2012 Acho que você deveria usar ' (apóstrofo) ao invés de " (aspas) na definição dentro das chaves. Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 18, 2012 Acho que você deveria usar ' (apóstrofo) ao invés de " (aspas) na definição dentro das chaves. Não é isso. Apóstrofo (ou aspas simples) é usado para char. O exemplo usa char*, então é com aspas duplas, sim. o problema é que a sintaxe usando chaves só funciona para intanciar e iniciar ao mesmo tempo: por exemplo: char x[2] = { 'a', 'b' }; note que isto não funciona: char x[2]; x = { 'a', 'b' }; então você tem que fazer um loop e preencher os dados usando strcpy() ou declarar e iniciar tudo em uma só expressão Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 18, 2012 Não é isso. Apóstrofo (ou aspas simples) é usado para char. O exemplo usa char*, então é com aspas duplas, sim. Me desculpe, mas onde o exemplo usa char*? --- Beuleal, o problema é que você, além de estar confundindo inicialização com atribuição, você está inicializando tudo errado. Lembre-se que você está fazendo a inicialização de um vetor multidimensional. Estude mais sobre vetores para entender porque. O correto seria isso: char fabricantes [10][10] = { "BMW", "Porche", "Ferrari", "Audi", "Chevolet", "Fiat", "Toyota", "Honda", "Hyundai", "VW" }; char modelos[4][10][10] = { { "X1", "X3", "Z4", "M3" } }; Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 18, 2012 Me desculpe, mas onde o exemplo usa char*? char é um caracter char* é uma string. Considerando que estamos falando de C, e não C++, o "vetor de caracteres" é char* e não string Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 18, 2012 char é um caracterchar* é uma string. Considerando que estamos falando de C, e não C++, o "vetor de caracteres" é char* e não string Não. Primeiro que essa parte é igual em C++, não confunda as coisas. O vetor de caracteres não é char*. char* também não é uma string, você está confundindo conceitos. E em C++ um vetor de caracteres continua sendo um vetor de caracteres, uma string é outra coisa completemente diferente. Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
Beraldo 864 Denunciar post Postado Maio 18, 2012 Não. Primeiro que essa parte é igual em C++, não confunda as coisas. Não é igual em C++. Ela pode ser igual. Eu poderia definir: string fabricantes[10]; O vetor de caracteres não é char*. char* também não é uma string, você está confundindo conceitos. um vetor é um ponteiro para a posição inicial. Uma string (char*) também o é. E em C++ um vetor de caracteres continua sendo um vetor de caracteres, uma string é outra coisa completemente diferente. Por que completamente diferente? string em C++ é um objeto, mas continua sendo representada por uma cadeia de caracteres Compartilhar este post Link para o post Compartilhar em outros sites
Renato Utsch 24 Denunciar post Postado Maio 19, 2012 Não é igual em C++. Ela pode ser igual. Eu poderia definir: string fabricantes[10]; Isso não é uma 'string', isso é uma 'std::string'. Por isso estou dizendo que você está se confundindo. O que você chama de 'string' em C e C++ é um vetor de caracteres. um vetor é um ponteiro para a posição inicial. Uma string (char*) também o é. Errado, um char* não é um ponteiro para a posição inicial de um vetor e muito menos uma string, é um ponteiro para um caracter. Um vetor é uma 'variável que contém múltiplos elementos de um mesmo tipo de dados', não um 'ponteiro para a posição inicial'. Por que completamente diferente? string em C++ é um objeto, mas continua sendo representada por uma cadeia de caracteres Errado também, uma 'std::string' não é representada por uma cadeia de caracteres. Ela é uma classe. Abraços :D Compartilhar este post Link para o post Compartilhar em outros sites
GBecker 51 Denunciar post Postado Maio 19, 2012 Completando o que o Renato disse. Um char* só pode ser encarado como uma string em c(vetor de caracteres) se você utilizá-lo com alocação dinâmica de memória. Caso contrário será apenas um ponteiro para char. Em C++: char* pcString = new char[80]; Onde operador new retorna um ponteiro para a área alocada. Este ponteiro é recebido pelo pcString, que é ponteiro para char. Compartilhar este post Link para o post Compartilhar em outros sites
guidjos 65 Denunciar post Postado Maio 19, 2012 Não. Um vetor nunca é um ponteiro. Um (char *) sempre será um (char *). A confusão acontece porque o valor de um vetor é um ponteiro para seu primeiro elemento, então as pessoas acabam confundindo o tipo do vetor com o tipo de seu valor. Apesar desta relação (a propósito, unidirecional) entre os dois tipos, o tamanho e representação de objetos de cada um deles é independente. Compartilhar este post Link para o post Compartilhar em outros sites