реклама на сайте
подробности

 
 
> Указатели на строку в С
psL
сообщение Jan 24 2016, 08:04
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 526
Регистрация: 5-08-05
Пользователь №: 7 390



В Си есть два способа определения строки:

Код
    char str[] = "string";
    void* p1= str;
    void* p2=&str;
    void* p3=&str[0];

    printf("%p\n%p\n%p\n",p1,p2,p3);

$ a.out
0xbfaa14c5
0xbfaa14c5
0xbfaa14c5


    char* str = "string";
    void* p1= str;
    void* p2=&str;
    void* p3=&str[0];

    printf("%p\n%p\n%p\n",p1,p2,p3);

$ a.out
0x80488bc
0xbfc25c78
0x80488bc


В первом случае p1 равен p2. Почему так?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amaora
сообщение Jan 24 2016, 10:17
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 421
Регистрация: 2-01-08
Пользователь №: 33 778



В первом случае нет переменных хранящих адрес массива, чтобы получить &str как во втором случае эту переменную пришлось бы создать и выдать ее адрес.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jan 24 2016, 10:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (amaora @ Jan 24 2016, 12:17) *
В первом случае нет переменных хранящих адрес массива, чтобы получить &str как во втором случае эту переменную пришлось бы создать и выдать ее адрес.

Потому, что в первом примере определена строка, а во втором УКАЗАТЕЛЬ на строку.

А вопрос-то был о другом.
Все три выражения в первом случае это есть одно и тоже, поскольку имя переменной это есть ее адрес, то указание взятия адреса есть масло маслянное. Для масивов адрес массива есть адрес его нулевого элемента, посему допронительное указание взять адрес именно нулевого есть уже масло маслянное для масла маслянного.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- psL   Указатели на строку в С   Jan 24 2016, 08:04
- - Сергей Борщ   Цитата(psL @ Jan 24 2016, 10:04) В Си ест...   Jan 24 2016, 10:32
|- - psL   Цитата(Сергей Борщ @ Jan 24 2016, 13:32) ...   Jan 24 2016, 11:26
|- - zltigo   QUOTE (psL @ Jan 24 2016, 13:26) Почему у...   Jan 24 2016, 11:34
||- - psL   Цитата(zltigo @ Jan 24 2016, 14:34) В это...   Jan 24 2016, 11:42
|- - SSerge   Цитата(psL @ Jan 24 2016, 18:26) чем отли...   Jan 24 2016, 11:36
|- - amaora   Цитата(psL @ Jan 24 2016, 14:26) разве им...   Jan 24 2016, 12:13
- - _Ivan_33   а почему 2? а строковый литерал типа #define MSG ...   Jan 24 2016, 11:10
- - zltigo   QUOTE (psL @ Jan 24 2016, 13:42) * Без K&R обь...   Jan 24 2016, 11:51
|- - psL   Цитата(zltigo @ Jan 24 2016, 14:51) Все т...   Jan 24 2016, 12:46
|- - gerber   Цитата(psL @ Jan 24 2016, 15:46) Можете к...   Jan 24 2016, 13:03
- - GetSmart   Wow! Индекс разрешили применять к rvalue? Цит...   Jan 24 2016, 12:54
|- - Сергей Борщ   Цитата(GetSmart @ Jan 24 2016, 14:54) Как...   Jan 24 2016, 13:11
- - GetSmart   Цитата(Сергей Борщ)Любой выполняющий требования ст...   Jan 24 2016, 13:17
|- - zltigo   QUOTE (GetSmart @ Jan 24 2016, 15:17) То ...   Jan 24 2016, 13:51
||- - GetSmart   Цитата(zltigo @ Jan 24 2016, 17:51) Смотр...   Jan 24 2016, 14:05
||- - krux   Цитата(GetSmart @ Jan 24 2016, 17:05) Кла...   Jan 24 2016, 14:20
|- - Сергей Борщ   Цитата(GetSmart @ Jan 24 2016, 15:17) То ...   Jan 24 2016, 13:55
|- - GetSmart   Цитата(Сергей Борщ @ Jan 24 2016, 17:55) ...   Jan 24 2016, 17:28
|- - Сергей Борщ   Цитата(GetSmart @ Jan 24 2016, 19:28) Кон...   Jan 24 2016, 18:45
|- - GetSmart   Цитата(Сергей Борщ @ Jan 24 2016, 22:45) ...   Jan 25 2016, 03:21
|- - Сергей Борщ   Цитата(GetSmart @ Jan 25 2016, 05:21) По ...   Jan 25 2016, 07:43
|- - GetSmart   Цитата(Сергей Борщ @ Jan 25 2016, 11:43) ...   Jan 25 2016, 07:56
|- - Сергей Борщ   Цитата(GetSmart @ Jan 25 2016, 09:56) Пре...   Jan 25 2016, 08:08
|- - GetSmart   Цитата(Сергей Борщ @ Jan 25 2016, 12:08) ...   Jan 25 2016, 08:16
|- - Сергей Борщ   Цитата(GetSmart @ Jan 25 2016, 10:16) По ...   Jan 25 2016, 08:54
|- - GetSmart   Цитата(Сергей Борщ @ Jan 25 2016, 12:54) ...   Jan 25 2016, 10:01
|- - Сергей Борщ   Цитата(GetSmart @ Jan 25 2016, 12:01) ...   Jan 25 2016, 10:34
|- - GetSmart   Цитата(Сергей Борщ @ Jan 25 2016, 14:34) ...   Jan 25 2016, 10:50
|- - CrimsonPig   Цитата(GetSmart @ Jan 25 2016, 10:50) Пос...   Jan 25 2016, 11:47
|- - Сергей Борщ   Цитата(CrimsonPig @ Jan 25 2016, 13:47) А...   Jan 25 2016, 12:21
||- - GetSmart   Цитата(Сергей Борщ @ Jan 25 2016, 16:21) ...   Jan 25 2016, 12:40
||- - GetSmart   Цитата(Сергей Борщ @ Jan 25 2016, 16:21) ...   Jan 25 2016, 13:08
|- - GetSmart   Цитата(CrimsonPig @ Jan 25 2016, 15:47) А...   Jan 25 2016, 13:53
|- - zltigo   QUOTE (GetSmart @ Jan 25 2016, 15:53) Обс...   Jan 25 2016, 14:33
- - gerber   "ABCD" не является rvalue, строго говоря...   Jan 24 2016, 14:16
|- - GetSmart   Цитата(gerber @ Jan 24 2016, 18:16) ...   Jan 24 2016, 14:22
|- - krux   Цитата(GetSmart @ Jan 24 2016, 17:22) Цит...   Jan 24 2016, 14:23
|- - Сергей Борщ   Цитата(GetSmart @ Jan 24 2016, 16:05) В с...   Jan 24 2016, 14:43
|- - GetSmart   ЦитатаЭто как? foo2( "ABCD" + "XYZ...   Jan 24 2016, 15:02
|- - zltigo   QUOTE (GetSmart @ Jan 24 2016, 17:02) foo...   Jan 24 2016, 15:24
|- - Сергей Борщ   Цитата(GetSmart @ Jan 24 2016, 17:02) foo...   Jan 24 2016, 15:28
- - GetSmart   Дополнил конец пред поста.   Jan 24 2016, 14:27
|- - krux   Цитата(GetSmart @ Jan 24 2016, 17:22) Воо...   Jan 24 2016, 14:38
- - GetSmart   Если строки складываются без плюса, то я не сильно...   Jan 24 2016, 15:30
|- - zltigo   QUOTE (GetSmart @ Jan 24 2016, 17:30) Есл...   Jan 24 2016, 15:42
- - GetSmart   Тогда есть отличия с взятием адреса массива через ...   Jan 24 2016, 15:55
- - SSerge   Кабы авторы языка С в своё время были так же искус...   Jan 25 2016, 08:01
- - GetSmart   Нашёл такую формулировку ЦитатаA postfix expressio...   Jan 25 2016, 12:19
|- - Сергей Борщ   Цитата(GetSmart @ Jan 25 2016, 14:19) В э...   Jan 25 2016, 12:46
||- - GetSmart   Цитата(Сергей Борщ @ Jan 25 2016, 16:46) ...   Jan 25 2016, 22:19
||- - Сергей Борщ   Цитата(GetSmart @ Jan 26 2016, 00:19) Пиш...   Jan 25 2016, 23:06
||- - zltigo   QUOTE (GetSmart @ Jan 26 2016, 00:19) Я н...   Jan 26 2016, 07:30
||- - GetSmart   Цитата(zltigo @ Jan 26 2016, 11:30) Как р...   Jan 26 2016, 11:53
|- - zltigo   QUOTE (GetSmart @ Jan 25 2016, 14:19) Клю...   Jan 25 2016, 13:15
|- - gerber   Цитата(zltigo @ Jan 25 2016, 16:15) 1) Я ...   Jan 25 2016, 13:19
||- - zltigo   QUOTE (gerber @ Jan 25 2016, 15:19) И как...   Jan 25 2016, 13:20
||- - gerber   Цитата(zltigo @ Jan 25 2016, 16:20) Как и...   Jan 25 2016, 13:23
||- - zltigo   QUOTE (gerber @ Jan 25 2016, 15:23) Хм .....   Jan 25 2016, 13:27
||- - gerber   Цитата(zltigo @ Jan 25 2016, 16:27) Но во...   Jan 25 2016, 15:02
||- - zltigo   QUOTE (gerber @ Jan 25 2016, 17:02) Как п...   Jan 25 2016, 15:39
|- - GetSmart   Цитата(zltigo @ Jan 25 2016, 17:15) Это ф...   Jan 25 2016, 13:19
- - gerber   Стандарт стандартом, но за работу с элементами мас...   Jan 25 2016, 13:12
- - GetSmart   Цитата(Сергей Борщ @ Jan 26 2016, 03:06) ...   Jan 25 2016, 23:46
|- - Сергей Борщ   Цитата(GetSmart @ Jan 26 2016, 01:46) С к...   Jan 26 2016, 00:31
|- - GetSmart   Цитата(Сергей Борщ @ Jan 26 2016, 04:31) ...   Jan 26 2016, 00:39
|- - Сергей Борщ   Цитата(GetSmart @ Jan 26 2016, 02:39) Нап...   Jan 26 2016, 08:41
- - sigmaN   Честно прочитал все сообщения. Так и не понял поче...   Jan 26 2016, 16:30
|- - Serg76   Цитата(sigmaN @ Jan 26 2016, 19:30) Вроде...   Jan 26 2016, 21:16
- - smalcom   Welcome to electronix ))   Jan 26 2016, 20:05
- - GetSmart   ЦитатаAn operator is called a Postfix Operator whe...   Feb 5 2016, 20:41
- - sigmaN   ЦитатаЕсли ерунда содержится в какой-то части стан...   Feb 6 2016, 10:51
- - krux   GetSmart пока ваш 'компилятор' не может со...   Feb 8 2016, 19:06
- - ar__systems   Это тему больно читать.... А когда вы работать ус...   Feb 9 2016, 14:24


Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th August 2025 - 23:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.05819 секунд с 7
ELECTRONIX ©2004-2016