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

  • Автор темы Автор темы mibin
  • Дата начала Дата начала
M

mibin

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

Результат ниже приведенного кода:
Код:
[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)
вернет единицу, т.к. один символ всегда занимает один байт
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab