ОБСУЖДЕНИЕ

Char*. как определить размер строки.

1 ответов 4,9 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

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

Результат ниже приведенного кода:
Код:
[MAIN] Size of string = 4
[PROC] Size of string = 4

C++:
#include <stdio.h>
#include <iostream.h>
 
void proc(char* ch) {
	cout << "[PROC] Size of string = " << sizeof(ch) << endl;
}
 
void main() {
	char* ch = "Hello my dear world!";
 
	cout << "[MAIN] Size of string = " << sizeof(ch) << endl;
	proc(ch);
}
 
Подключи модуль обработки Си-строк (char*) и вызови функцию strlen:
C++:
#include <string.h>
// ...
char *str;
// ...
cout << strlen(str);

size, который вы пытались вызывать - это не функция, а макрос, который возвращает количество байт, занимаемое типом данных. Т.е. в данном случае видно, что элементы типа данных char* занимают на вашем компьютере 4 байта.

Тип данных char* - это указатель, который является целым неотрицательным числом. Именно поэтому там 4 байта.
C++:
size(char)
вернет единицу, т.к. один символ всегда занимает один байт