gpt4 book ai didi

c - 获取指针数据的大小

转载 作者:行者123 更新时间:2023-11-30 16:33:50 26 4
gpt4 key购买 nike

我尝试了以下代码来了解如何获取指针数据的大小:

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
char *test_char_ptr = "This is just a test";
int *test_int_ptr = (int *) malloc(16*sizeof(int));
for(int i = 0; i<16; i++){
test_int_ptr[i] = i;
}
printf("%s\n",test_char_ptr);
printf("Test char 1: %d\n", (int)sizeof test_char_ptr );
printf("Test char 2:%d\n", (int)sizeof *test_char_ptr );
printf("Test char 3: %d\n", (int)((strlen(test_char_ptr)+1) * sizeof(char)));
printf("Test int 1:%d\n", (int)sizeof test_int_ptr );
printf("Test int 2:%d\n", (int)sizeof *test_int_ptr );
return EXIT_SUCCESS;
}

代码的输出是(在 32 位 gcc 4.3 上):

This is just a test
Test char 1: 4
Test char 2:1
Test char 3: 20
Test int 1:4
Test int 2:4

我认为 sizeof(*test_char_ptr) 会给我 *test_char_ptr 内部数据的大小。但它给了我 1 ,我认为这是 char 的大小而不是数据。 test_int_ptr 也是如此。长话短说,我的问题是如何获取指针或动态内存分配数组内的数据大小。

最佳答案

如果您不自己维护信息,则无法在 C 中执行此操作。您创建了数组,因此您在某一时刻知道它们的大小,您只需自己跟踪它即可。您可以创建一个数据结构来帮助您,或者只是仔细维护数组和大小信息,而根本不需要任何数据结构。

此外,您的代码使用 strlen() 来获取字符串的大小 - 请确保您记住返回的大小不会包含终止空字符 ('\0 ');字符串常量在内存中的大小为 strlen(string) + 1

关于c - 获取指针数据的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49564696/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com