Автор Jolly Roger задал вопрос в разделе Другие языки и технологии
[C++] char && char* && char[ ] и получил лучший ответ
Ответ от Зло[гуру]
char* x = "Hello"; и char s[ ] = "Hello"; - считай, одно и то же.
x и s- указатели на char, длина определяется из пост условия.
cout << *x; - вывести значение по адресу x. можешь попробовать cout << *(x+1); и т. д.
cout << "The value of x: " << x << endl; выводит Hello потому что ты и просишь его вывести строку.
если нужен адрес - можешь, например, воспользоваться printf( "%p", x )
давай лучше через почту
Ответ от Николай Веселуха[гуру]
Здесь ощущается разница.. .
#include <iostream>
using namespace std;
int main() {
char arr[] = "Hello";
char * ptr = "Hello";
int size_arr, size_ptr;
size_arr = sizeof(arr);
size_ptr = sizeof(ptr);
cout << "size_arr = " << size_arr << endl << "size_ptr = " << size_ptr;
cin.get();
return 0;
}
Во втором случае ничего не известно о размере строки. Попытка вычислить выдаёт размер самого указателя, который является int, хотя и указывает на char
Здесь ощущается разница.. .
#include <iostream>
using namespace std;
int main() {
char arr[] = "Hello";
char * ptr = "Hello";
int size_arr, size_ptr;
size_arr = sizeof(arr);
size_ptr = sizeof(ptr);
cout << "size_arr = " << size_arr << endl << "size_ptr = " << size_ptr;
cin.get();
return 0;
}
Во втором случае ничего не известно о размере строки. Попытка вычислить выдаёт размер самого указателя, который является int, хотя и указывает на char
Ответ от None[эксперт]
Запомни. Имя массива (этикетка) - это всегда указатель на первый элемент массива и не важно какой будет тип.
Что такое строка ?? -это массив символов. Ты можешь объявить либо указатель на строку, либо массив символов, суть одна. т. к повторю имя массива - это указатель на первый элемент.
Почему же в первом варианте у тебя возникает ошибка при присваивании элементу строки. Это зависит от реализации компилятора, когда ты объявляешь указатель на строку, он помещает эти данные в неизменяемую область памяти. Фактически у тебя получается константная строка.
Поэтому предподчительней второй способ.
Запомни. Имя массива (этикетка) - это всегда указатель на первый элемент массива и не важно какой будет тип.
Что такое строка ?? -это массив символов. Ты можешь объявить либо указатель на строку, либо массив символов, суть одна. т. к повторю имя массива - это указатель на первый элемент.
Почему же в первом варианте у тебя возникает ошибка при присваивании элементу строки. Это зависит от реализации компилятора, когда ты объявляешь указатель на строку, он помещает эти данные в неизменяемую область памяти. Фактически у тебя получается константная строка.
Поэтому предподчительней второй способ.
Ответ от None[активный]
Запомни. Имя массива (этикетка) - это всегда указатель на первый элемент массива и не важно какой будет тип. Что такое строка ?? -это массив символов. Ты можешь объявить либо указатель на строку, либо массив символов, суть одна. т. к повторю имя
Запомни. Имя массива (этикетка) - это всегда указатель на первый элемент массива и не важно какой будет тип. Что такое строка ?? -это массив символов. Ты можешь объявить либо указатель на строку, либо массив символов, суть одна. т. к повторю имя
Ответ от Николай Веселуха[гуру]
Здесь ощущается разница.. . #include <iostream> using namespace std; int main() { char arr[] = "Hello"; char * ptr = "Hello"; int size_arr, size_ptr; size_arr = sizeof(arr); size_ptr = sizeof(
Здесь ощущается разница.. . #include <iostream> using namespace std; int main() { char arr[] = "Hello"; char * ptr = "Hello"; int size_arr, size_ptr; size_arr = sizeof(arr); size_ptr = sizeof(
Ответ от None[активный]
Запомни. Имя массива (этикетка) - это всегда указатель на первый элемент массива и не важно какой будет тип. Что такое строка ?? -это массив символов. Ты можешь объявить либо указатель на строку, либо массив символов, суть одна. т. к повторю имя
Запомни. Имя массива (этикетка) - это всегда указатель на первый элемент массива и не важно какой будет тип. Что такое строка ?? -это массив символов. Ты можешь объявить либо указатель на строку, либо массив символов, суть одна. т. к повторю имя
Ответ от Николай Веселуха[гуру]
Здесь ощущается разница.. . #include <iostream> using namespace std; int main() { char arr[] = "Hello"; char * ptr = "Hello"; int size_arr, size_ptr; size_arr = sizeof(arr); size_ptr = sizeof(
Здесь ощущается разница.. . #include <iostream> using namespace std; int main() { char arr[] = "Hello"; char * ptr = "Hello"; int size_arr, size_ptr; size_arr = sizeof(arr); size_ptr = sizeof(
Ответ от 3 ответа[гуру]
Привет! Вот подборка тем с ответами на Ваш вопрос: [C++] char && char* && char[ ]
спросили в Shadrinsk
Pascal. Как перевести из char в string и наоборот?
String по сути - массив Char
c : Char;
s :String;
s[\'любой номер\']:=c;
или
подробнее...
Pascal. Как перевести из char в string и наоборот?
String по сути - массив Char
c : Char;
s :String;
s[\'любой номер\']:=c;
или
подробнее...
Как перевести тип int в тип char на C?
int и char преобразуются друг в друга автоматом, т. е. можно записать:
int i;
char c;
c
подробнее...
спросили в Железо
хочу собрать компьютер с core i7
вот система c Core i7 с оптимальным соотношением цена/производительность:
Процессор
подробнее...
хочу собрать компьютер с core i7
вот система c Core i7 с оптимальным соотношением цена/производительность:
Процессор
подробнее...
getenv() в C++ где узнать весть список переменных окружения?
#include <iostream>
using namespace std;
int main(int, char* [], char*
подробнее...
спросили в Stdio h Stdlib h
Как задать двумерный массив строк в C? Как его потом заполнять?
Можно и так.. .
// _70077822
#include <stdio.h>
#include
подробнее...
Как задать двумерный массив строк в C? Как его потом заполнять?
Можно и так.. .
// _70077822
#include <stdio.h>
#include
подробнее...
Ответ от 3 ответа[гуру]
Привет! Вот еще темы с похожими вопросами:
спросили в Железо 635 год
Core i5. чем хороши новые процы от intel? и чем будет отличаться Core i5-650 (3.20Hz) от Athlon II X4 635 (2.9 GHz)?
пипец)) копипаст, самому написать мозга не хватает. атлоны будут немного слабее в играх, но на
подробнее...
Core i5. чем хороши новые процы от intel? и чем будет отличаться Core i5-650 (3.20Hz) от Athlon II X4 635 (2.9 GHz)?
пипец)) копипаст, самому написать мозга не хватает. атлоны будут немного слабее в играх, но на
подробнее...
Как перевести буквы в цифры и назад?
функция ord(c: char): integer
возвращает анси код символа
а твоем случае тебе надо сделать
подробнее...
спросили в Египет Gokusen
Не могу найти онлайн веб камеру Каир Египет. Подскажите адресок.
Камеры Египта:
#yahrefs78446#
подробнее...
Не могу найти онлайн веб камеру Каир Египет. Подскажите адресок.
Камеры Египта:
#yahrefs78446#
подробнее...
спросили в Футбол
сколько раз играли между собой Россия (СССР) и Уругвай в футбол?
Кубок независимости Бразилии 1972, 1/2 финала, группа B
29.06.1972СССР –Уругвай1:0 (1:0)
подробнее...
сколько раз играли между собой Россия (СССР) и Уругвай в футбол?
Кубок независимости Бразилии 1972, 1/2 финала, группа B
29.06.1972СССР –Уругвай1:0 (1:0)
подробнее...
Множества (Delphi)
var A, B, D : Set of Char;
C : Char;
begin
...Заполнить нужно! Но как заполнить не
подробнее...
Определить порядковый номер буквы в русском алфавите
В таблице кодировки DOS есть разрыв между символами "п" и "р" (маленькие русские буквы, для больших
подробнее...
спросили в Gotthard
Динамическое выделение памяти, при сравнении строк. (Си без использования встр. функций)
> char *pass;
> scanf("%s", &pass);
Это не будет работать!
В переменной pass
подробнее...
Динамическое выделение памяти, при сравнении строк. (Си без использования встр. функций)
> char *pass;
> scanf("%s", &pass);
Это не будет работать!
В переменной pass
подробнее...
спросили в Шифр
XOR шифрование. Как работает этот алгоритм (каким образом он шифрует)
примере программы на Delphi.
var key, text, longkey, result : string;
i :
подробнее...
XOR шифрование. Как работает этот алгоритм (каким образом он шифрует)
примере программы на Delphi.
var key, text, longkey, result : string;
i :
подробнее...