Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
MqlRates mrate[];//массив нулевого размера
Usar ArrayResize e ArrayInitialize.
Normalmente com CopyRates esta estrutura é utilizada.
Renat disse que era melhor fazê-lo desta forma:
Vamos tentar descobrir. Tanto quanto me lembro, Renat falava em inicializar uma variável simples, não uma matriz. Com batalhas, exemplos semelhantes apareceram no Manual de Referência:
Você, por outro lado, tenta rubricar uma matriz em vez de uma simples variável quando a declara. Encontrei este exemplo no Manual:
A matriz aqui é inicializada com um número finito de valores, e a explicação diz que o compilador determina o tamanho de tal matriz com base no número destes valores. Sou demasiado preguiçoso para verificar - o tamanho da matriz f[] do exemplo é muito provável que seja 6.
Na sua amostra, o tamanho da sequência de iniciação {0} é 1. Consequentemente, o compilador definirá muito provavelmente o tamanho da taxa da matriz[] como 1. Aqui, por uma questão de interesse, especificá-lo desta forma:
Irá causar um erro?Fiquei confuso. Swan explicou-o claramente. Tomei a estrutura errada. Não precisa de ser inicializada de forma alguma porque requer valores. É preciso inicializar os que dão os seus valores. Eu estava errado.
Bem, isso é o principal. A questão sobre Renate era interessante por si só, por isso também descobri algo.
duplo f[] = { 0,0, 0,236, 0,382, 0,5, 0,618, 1,0 }; não uma matriz dinâmica.
duplo f[] = { 0,0, 0,236, 0,382, 0,5, 0,618, 1,0 }; matriz não dinâmica.
double f[] é uma matriz dinâmica por si só. É esta matriz que é declarada durante a criação. Ainda não analisei se deixará de ser dinâmico depois de o inicializar com a sequência de inicialização finita. A principal coisa que descobriu acima é que a matriz declarada adquire um tamanho particular após a inicialização.
Está a dizer que a matriz dinâmica no resultado da inicialização explícita deixa de ser dinâmica, ou seja, perde o seu estatuto e propriedades dinâmicas? - Talvez sim, mas duvido. Pergunta: com que fundamentos (porquê) um f[] f[] dinâmico deixa de ser um f[] dinâmico?
O duplo f[] é em si mesmo uma matriz dinâmica. É declarado na criação. Ainda não investiguei se deixa de ser dinâmico após a inicialização pela sequência de inicialização final. A principal coisa que descobriu acima é que a matriz declarada adquire um tamanho particular após a inicialização.
Está a dizer que a matriz dinâmica no resultado da inicialização explícita deixa de ser dinâmica, ou seja, perde o seu estatuto e propriedades dinâmicas? - Talvez sim. Então a questão é: porquê?
A questão é que nós em MKL estamos um pouco "isolados" do mundo real ), o compilador decide por nós em tal situação. Se o vir:
cria uma matriz estática (sem a capacidade de a redimensionar). Se o vir:
double f[];
cria a estrutura MqlArrayObject (comporta-se como uma matriz dinâmica), na memória global. Portanto, não pode inicializar um array após declaração (double f[]; f = {6};)
P.S: tudo escrito é o meu IMHO, posso estar errado algures.
Pergunta de um boneco: É verdade que se o compilador vê a corda
irá inicialmente criar uma matriz estática em vez de uma dinâmica?
Existe uma regra:"Ao declarar um array dinâmico (um array com um valor não especificado no primeiro par de parênteses rectos), o compilador cria automaticamente uma variável estrutural MqlArrayObject(um objecto de array dinâmico) e fornece o código para uma inicialização adequada. Ou será a presença da sequência inicializadora final igual a "especificar explicitamente todas as dimensões significativas da matriz" e leva à criação de uma matriz estática?
Pergunta de um boneco: É verdade que se o compilador vê a corda
irá inicialmente criar uma matriz estática em vez de uma dinâmica?
Existe uma regra:"Ao declarar um array dinâmico (um array com um valor não especificado no primeiro par de parênteses rectos), o compilador cria automaticamente uma variável estrutural MqlArrayObject(um objecto de array dinâmico) e fornece o código para uma inicialização adequada. Ou será a presença da sequência inicializadora final igual a "especificar explicitamente todas as dimensões significativas da matriz" e leva à criação de uma matriz estática?
É fraco verificá-lo?
;)
Não acha que deveria verificar?
;)
Neste momento, é fraca. Não chegarei ao terminal antes desta noite. Caso contrário, a minha resposta a 220Volt teria soado diferente, como compreende :) Não consegui encontrar a informação no Manual. Talvez eu não estivesse a procurar o suficiente, mas estava a ser meticuloso.
OK, estou fora do terminal. :) Estou também fora do terminal.
Verificado elementar - tentando usar o ArrayResize(...)