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

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

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

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

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


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


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

Понятно, спасибо. А, где можно почитать про string, какие методы у него есть?
...
Рейтинг: 0 / 0
19.10.2007, 12:14:07
    #34880445
битый
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
char* a;
char* b;
char* c;
char* d;
//объявляем четыре указателя в четырёх строках
//а можно то же самое одной строкой
//char *a,*b,*c,*d;
//но не так char* a,b,c,d; !!!
...
Рейтинг: 0 / 0
19.10.2007, 12:25:14
    #34880500
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
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
19.10.2007, 12:28:26
    #34880514
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
Dr@gon Akh Dr@gon
а про char не понял.


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

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

Поищи, например, Bjarne Stroustrup - The Cpp Programming Language Special Edition или Николай Джосьютис. Стандартная библиотека C++. В сети точно есть.
...
Рейтинг: 0 / 0
19.10.2007, 14:09:08
    #34881012
Dr@gon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
Спасибо!
А вот так char **a
Двойной указатель, т.е. указатель на указатель, зачем это нужно?
...
Рейтинг: 0 / 0
19.10.2007, 14:13:46
    #34881031
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
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
19.10.2007, 14:21:36
    #34881069
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
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
19.10.2007, 14:40:17
    #34881151
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
это ссылка на указатель? Не наоборот?
...
Рейтинг: 0 / 0
19.10.2007, 14:59:55
    #34881223
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
maXmoэто ссылка на указатель? Не наоборот?

Да, читать надо от имени переменной. Получается указатель на ссылку. Ссылка это не объект для компилятора. Пример, имхо, не скомпилируется.
...
Рейтинг: 0 / 0
19.10.2007, 16:04:23
    #34881431
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
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
19.10.2007, 16:34:25
    #34881517
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
ErV, а ты не пробовал написать функцию, возвращающую указатель на функцию без тайпдефа?
...
Рейтинг: 0 / 0
19.10.2007, 18:34:30
    #34881895
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
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
22.10.2007, 11:28:10
    #34884164
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Еще раз про char, объясните популярно, а?
не экзамен, они по одному принципу строятся – от идентификатора.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Еще раз про char, объясните популярно, а? / 19 сообщений из 19, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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