相关疑难解决方法(0)

如何找到'sizeof'(指向数组的指针)?

首先,这里是一些代码:

int main() 
{
    int days[] = {1,2,3,4,5};
    int *ptr = days;
    printf("%u\n", sizeof(days));
    printf("%u\n", sizeof(ptr));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

有没有办法找出ptr指向的数组的大小(而不是仅仅给出它的大小,在32位系统上是4个字节)?

c arrays pointers sizeof

288
推荐指数
8
解决办法
35万
查看次数

如何获得char*(char数组)的实际长度和总长度?

对于a char [],我可以很容易地得到它的长度:

char a[] = "aaaaa";
int length = sizeof(a)/sizeof(char); // length=6
Run Code Online (Sandbox Code Playgroud)

但是,我不能这样做以获得a的长度char *:

char *a = new char[10];
int length = sizeof(a)/sizeof(char);
Run Code Online (Sandbox Code Playgroud)

因为,我知道,a这里是一个指针,所以length这里将永远是4(或不同系统中的其他东西).

我的问题是,如何才能获得char *事后的长度?我知道有人可能会挑战我你已经知道它,10因为你刚刚创造了它.我想知道这一点,因为这个获得它的长度的步骤可能会从它的创建中走很长一段路,而且我不想长时间回来检查这个数字.而且,我也想知道它的实际长度.

更具体

  • 我怎样才能得到真实的length=5
  • 我怎么能得到它的总数length=10

对于以下示例:

char *a = new char[10]; 
strcpy(a, "hello");
Run Code Online (Sandbox Code Playgroud)

c c++ arrays char

39
推荐指数
3
解决办法
20万
查看次数

标签 统计

arrays ×2

c ×2

c++ ×1

char ×1

pointers ×1

sizeof ×1