powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Еще раз про char, объясните популярно, а?
19 сообщений из 19, страница 1 из 1
Еще раз про char, объясните популярно, а?
    #34880243
Dr@gon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем отличается char* a, от char *a
И, что значит:
string s;
s.c_str()
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880273
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr@gonЧем отличается char* a, от char *a
И, что значит:
string s;
s.c_str()

пробелом
функция преобразования string к char const*
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880276
Фотография битый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
char *a,*b,*c,*d;// очень удобно, не правда ли?
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880291
Dr@gon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh Dr@gonЧем отличается char* a, от char *a
И, что значит:
string s;
s.c_str()

пробелом
функция преобразования string к char const*

Вот, спасибо про string, это мне и нужно сейчас, а про char не понял.
Тяжело с Foxpro переходить на С
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880314
Dr@gon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
битыйchar *a,*b,*c,*d;// очень удобно, не правда ли?

Битый не понял, это к чему?
Меня интересует это char* a это указатель на что?
и если char *a это на что?
Без разницы получается где * стоит?
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880368
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr@gon
а про char не понял.


количество проболов и их наличие в Си значения не имеют. Единственная их необходимость в том, чтобы литеры не сливались. В строковые литеры (будь то имя типа или имя переменной) содержать в себе звездочку не могут, поэтому компилятору по барабану, есть там разделители или нет. К чему виду, понятно?
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880443
Dr@gon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akh Dr@gon
а про char не понял.


количество проболов и их наличие в Си значения не имеют. Единственная их необходимость в том, чтобы литеры не сливались. В строковые литеры (будь то имя типа или имя переменной) содержать в себе звездочку не могут, поэтому компилятору по барабану, есть там разделители или нет. К чему виду, понятно?

Понятно, спасибо. А, где можно почитать про string, какие методы у него есть?
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880445
Фотография битый
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
char* a;
char* b;
char* c;
char* d;
//объявляем четыре указателя в четырёх строках
//а можно то же самое одной строкой
//char *a,*b,*c,*d;
//но не так char* a,b,c,d; !!!
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880500
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr@gon wrote:

> Чем отличается char* a, от char *a
Ничем.

> А, где можно почитать про string, какие методы у него есть?
F1, или Alt+Ctrl(или Shift+Ctrl, уже не помню)+F2, там вбиваем
std::string. Это ежели у вас MSVC 2003..2005.

битый wrote:
> //но не так char* a,b,c,d; !!!
Можно, но b, c, и d не будут указателями.

Dr@gon wrote:
> Без разницы получается где * стоит?
Когда перед переменной стоит * или &, т.е.
int * a;
рассматривай это не как объявление переменной а типа "int*", а
рассматривай это как объявление переменной типа int, где звездочка
перед именем переменной - это модификатор, который показывает, что эта
переменная - указатель. Понятно? То же самое со ссылками. А где стоит
пробел - до или после звездочки - это по барабану.
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34880514
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr@gon Akh Dr@gon
а про char не понял.


количество проболов и их наличие в Си значения не имеют. Единственная их необходимость в том, чтобы литеры не сливались. В строковые литеры (будь то имя типа или имя переменной) содержать в себе звездочку не могут, поэтому компилятору по барабану, есть там разделители или нет. К чему виду, понятно?

Понятно, спасибо. А, где можно почитать про string, какие методы у него есть?

Поищи, например, Bjarne Stroustrup - The Cpp Programming Language Special Edition или Николай Джосьютис. Стандартная библиотека C++. В сети точно есть.
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34881012
Dr@gon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
А вот так char **a
Двойной указатель, т.е. указатель на указатель, зачем это нужно?
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34881031
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr@gonСпасибо!
А вот так char **a
Двойной указатель, т.е. указатель на указатель, зачем это нужно?


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
class Name {
   static char* name="My name";
  public:
   void getName(char **s) {
        *s=name;
   }
};

...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34881069
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr@gon wrote:

> Двойной указатель, т.е. указатель на указатель, зачем это нужно?
Например, ты хочешь, чтобы функция изменила перемнную-указатель, которая
находится где-то ещё. Т. е.:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <stdio.h>
int global1 =  2 ;
int global2 =  3 ;

void changePtr(int **arg){
        *arg = &global2;
}

int main(int argc, char** argv){
        int *tmp = &global1;
        printf("%d\n", *tmp);
        changePtr(&tmp);
        printf("%d\n", *tmp);   
}
Понятно? Хотя я бы в этом случае взял бы ссылку на указатель:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <stdio.h>
int global1 =  2 ;
int global2 =  3 ;

void changePtr(int &*arg){
        arg = &global2;
}

int main(int argc, char** argv){
        int *tmp = &global1;
        printf("%d\n", *tmp);
        changePtr(tmp);
        printf("%d\n", *tmp);   
}

Ну м плюс посотри внимательней на argv в функции main(), тогда все
вопросы должны отпасть...
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34881151
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это ссылка на указатель? Не наоборот?
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34881223
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmoэто ссылка на указатель? Не наоборот?

Да, читать надо от имени переменной. Получается указатель на ссылку. Ссылка это не объект для компилятора. Пример, имхо, не скомпилируется.
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34881431
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh wrote:

> Да, читать надо от имени переменной. Получается указатель на ссылку.
> Ссылка это не объект для компилятора. Пример, имхо, не скомпилируется.
Мда, облажался я.
Спасибо, что хоть носом ткнули...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <stdio.h>
int global1 =  2 ;
int global2 =  3 ;

void changePtr(int *&arg){
        arg = &global2;
}

int main(int argc, char** argv){
        int *tmp = &global1;
        printf("%d\n", *tmp);
        changePtr(tmp);
        printf("%d\n", *tmp);   
}

Вообще изначально с толку сбивает:
Код: plaintext
1.
int *b= 0 , **c, *&d=b;
причем как раз в случае, если * рассматривать как модификатор - кажется
логичным, что тогда последующие знаки должны добавляться слева а не
справа...
Ну да ладно, впрочем..
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34881517
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV, а ты не пробовал написать функцию, возвращающую указатель на функцию без тайпдефа?
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34881895
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo wrote:

> ErV, а ты не пробовал написать функцию, возвращающую указатель на
> функцию без тайпдефа?
Это что, экзамен?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
#include <stdio.h>

void b(){
    printf("asdf\n");
}

void (*c())(){
    return b;
}

int main(int argc, char** argv){        
    (*c())();    
    return  0 ;   
}

Можно развить тему :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
#include <stdio.h>

void b(){
    printf("asdf\n");
}

void (*c())(){
    return b;
}

void (*(*d())())(){
    return c;
}

int main(int argc, char** argv){        
    (*((*d())()))();    
    return  0 ;   
}

--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Еще раз про char, объясните популярно, а?
    #34884164
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не экзамен, они по одному принципу строятся – от идентификатора.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Еще раз про char, объясните популярно, а?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]