【发布时间】:2014-01-28 03:31:32
【问题描述】:
对于char [],我可以通过以下方式轻松获取其长度:
char a[] = "aaaaa";
int length = sizeof(a)/sizeof(char); // length=6
但是,我无法通过以下方式获取 char * 的长度:
char *a = new char[10];
int length = sizeof(a)/sizeof(char);
因为,我知道,a 这里是一个指针,所以这里的length 将永远是4(或不同系统中的其他东西)。
我的问题是我怎样才能得到char * 的长度? 我知道有人可能会挑战我你已经知道它的10,因为你刚刚创建了它。我想知道这一点,因为获取它的长度的这个步骤可能距离它的创建还有很长的路要走,我不想回来检查这个数字。另外,我也想知道它的真实长度。
更具体
- 我怎样才能得到它的真实
length=5? - 我怎样才能得到它的总数
length=10?
以下示例:
char *a = new char[10];
strcpy(a, "hello");
【问题讨论】:
-
strlen? (....) -
@KirilKirov 不会给出数组的长度。嗯,它会,但只在特殊情况下。
-
这个问题之前已经回答过了,指针不保存它所指向的数据块的大小信息(如果它指向一个数组),只保存它在内存中的起始位置。跨度>
-
你可以使用
std::vector<char>,这样你就有了大小,并且为你完成了内存管理 -
能否请您确定您要询问的是哪种语言?如果是C,则不能使用
new;如果是 C++,那么你应该使用更高级别的抽象,比如vector来解决这个问题。
标签: c++ c arrays pointers char