creating/sizing C 中的动态数组(指针)出现问题
Trouble with creating/sizing a dynamic array (pointer) in C
它的作用应该很明显,但是我的 userLetters 数组大小不正确...这是怎么回事??我想得到数组的大小,你将元素的大小乘以你想要的数量?
我需要 userLetters 数组的长度与用户字符串的长度相同。
注意:user 是设置为 getenv(USER) 的全局变量
// Get an integer array representing the userid string in values
fprintf(stdout, "user has length %d\n", strlen(user));
int * userLetters = (int*)malloc(sizeof(int) * strlen(user));
fprintf(stdout, "Created userLetters from username %s\n", user);
fprintf(stdout, "userLetters has length %d\n", sizeof(userLetters)/sizeof(int));
这是输出:
user has length 6
Created userLetters from username abcdef
userLetters has length 2
sizeof(userLetters)
给你 sizeof(pointer)
而不是 sizeof(array)
你在进行动态内存分配时
int *p = malloc(sizeof(int) * n);
所以n
是数组中的元素个数。
它的作用应该很明显,但是我的 userLetters 数组大小不正确...这是怎么回事??我想得到数组的大小,你将元素的大小乘以你想要的数量?
我需要 userLetters 数组的长度与用户字符串的长度相同。
注意:user 是设置为 getenv(USER) 的全局变量
// Get an integer array representing the userid string in values
fprintf(stdout, "user has length %d\n", strlen(user));
int * userLetters = (int*)malloc(sizeof(int) * strlen(user));
fprintf(stdout, "Created userLetters from username %s\n", user);
fprintf(stdout, "userLetters has length %d\n", sizeof(userLetters)/sizeof(int));
这是输出:
user has length 6
Created userLetters from username abcdef
userLetters has length 2
sizeof(userLetters)
给你 sizeof(pointer)
而不是 sizeof(array)
你在进行动态内存分配时
int *p = malloc(sizeof(int) * n);
所以n
是数组中的元素个数。