0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 10
1

Что значит запись char massiv[] = "text" ?

03.12.2015, 23:30. Показов 2517. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Почему не указан размер массива и присваивается строка?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2015, 23:30
Ответы с готовыми решениями:

Что значит char c[10]
объясните пожалуйста пошагово этот код #include <iostream> using namespace std; int main(...

Что значит text repl size
Всем привет, у меня такой вопрос по поводу вот этой ошибки: Длина данных больших объектов...

что значит static char?
подскажите что означает static char ret;

Что значит две звездочки у char?
int main(int argc, char** argv)

Что означает такая запись char *smt=new char[1]?
что означает такая запись char *smt=new char?

7
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
03.12.2015, 23:34 2
Правильная запись как для любимых типов (initialization-list)
C++
1
char mass[5] = {'t', 'e', 'x', 't', '\0'};
Как думаешь: насколько бы скоро сожгли бы разработчиков языка С++, если бы они не сделали исключение и не позволили не указывать размер и сами определяли размер
0
Kerry_Jr
03.12.2015, 23:38
  #3

Не по теме:

Цитата Сообщение от rikimaru2013 Посмотреть сообщение
как для любимых типов
любимых? У вас есть любимые типы? :D

0
0 / 0 / 0
Регистрация: 01.11.2015
Сообщений: 10
03.12.2015, 23:42  [ТС] 4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void get_drive()
{
    cout<<"Use GetDriveTypeA():"<<endl;
 
    unsigned int rez;
    char disk_name[]="A:";
    for(short i = 0; i < 32; i++)
    {
        rez = GetDriveTypeA(disk_name);
        switch(rez)
        {
            case DRIVE_FIXED:
                cout << disk_name << endl;
                break;
        }
 
        disk_name[0]++;
    }
Вот код, тут поиск всех фиксированных дисков, почему такая запись?
0
rikimaru2013
03.12.2015, 23:49
  #5

Не по теме:

Цитата Сообщение от Kerry_Jr Посмотреть сообщение
любимых? У вас есть любимые типы?
:-[

0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
04.12.2015, 17:03 6
Там, где идёт инициализация массива, размерность массива можно не объявлять, компилятор посчитает её сам. Типа того, что

C
int arr[] = { 1, 2, 3 };
Что касается строковых литералов, можешь почитать тут https://www.cyberforum.ru/blogs/18334/blog97.html
0
Комп_Оратор)
Эксперт по математике/физике
8945 / 4699 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
04.12.2015, 19:32 7
Лучший ответ Сообщение было отмечено VinniPuh как решение

Решение

Pomidorka123, switch можно заменить на if
C++
1
if(res==DRIVE_FIXED)cout<<disk_name<<endl;
Инкрементирование первого элемента массива приведёт к проходу по символам A,B,C,D... так как char это целый тип.
А создание и инициализация массива литералом без явного указания размера, это удобно. Вся инфа о массиве (размер и контент) берётся из литерала. В конце добавляется символ '\0', чтобы получилась валидная c-строка, которую, к примеру, можно без "БУМ!" передать по указателю на char туда, где ждут строку. Например в библиотечную функцию strlen :
C++
1
size_t strlen ( const char * str );
На вопрос: "Почему так сделано" я отвечу: "Потому, что так сделано в С". Для совместимости то есть. А на вопрос Почему так сделано в C я знаю только ответ "Потому что)".
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
05.12.2015, 11:25 8
Только цикл должен быть из 26 итераций, а не 32

Добавлено через 10 часов 51 минуту
Цитата Сообщение от Pomidorka123 Посмотреть сообщение
Вот код, тут поиск всех фиксированных дисков, почему такая запись?
Программист должен уметь обладать навыком экспериментирования на коротких примерах. Весь этот windows-зависимый код можно превратить в короткий машинно-независимый код, простой и понятный для экспериментов

C
#include <stdio.h>
 
int main (void)
{
  char text[] = "A:";
 
  printf ("%s\n", text);
  text[0] = 'B';
  printf ("%s\n", text);
  text[0]++;
  printf ("%s\n", text);
  return 0;
}
1
05.12.2015, 11:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2015, 11:25
Помогаю со студенческими работами здесь

Что значит неявное преобразование типа string[] в char[] невозможно?
using System; using System.Collections.Generic; using System.Linq; using System.Text; using...

Char predl[100]; - что это значит кто может сказать?
char predl; - что это значит кто может сказать?

что значит запись
Извините, не хочу создавать тему для глупого вопроса, поэтому напишу здесь, скажите, что значит...

Что значит запись
Объявление var pattern1 = /( |^)(select)( |$)/; var pattern2 = new RegExp(&quot;( |^)(&quot; +...

Что значит запись
Собственно интересует, что значит обратиться к &quot;-1&quot; элементу в массиве &quot;old_vtable_&quot; и что я...

C++ Что значит запись
Скажите, пожалуйста, что означает эта запись? Идет цикл, а дальше я не знаю, что значат эти числа...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru