Скажите пожалуйста, почему так:
main.cpp
#include "str.h"
using namespace nstr;
void main()
{
char s[5] = {'+', '-', '*', '/', '^'};
is_in_set('+', s);
cout << sizeof(s)/sizeof(char); //выводит 5
}
---------------
str.h
#include <iostream>
using namespace std;
namespace nstr
{
void is_in_set(char c, char* s)
{
cout << sizeof(s)/sizeof(char) << "\n"; //выводит 4
};
};
Я так понял, что в main.cpp выводится количество элементов в массиве, как хотелось бы,а в str.h все время 4. С чем это связано?
Спасибо.
Question...
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Всё правильно, в первом случае ты проверяешь размер массива из 5 символов типа char[5], во втором случае ты проверяешь размер указателя на массив типа char*.
Размер любого указателя в 32-разрадной системе равен 4 байтам.
Если тебе нужно узнать длину строки типа char *s, воспользуйся функцией strlen(s)
Размер любого указателя в 32-разрадной системе равен 4 байтам.
Если тебе нужно узнать длину строки типа char *s, воспользуйся функцией strlen(s)