gpt4 book ai didi

c - 使用指向 char 数组的指针,可以访问该数组中的值?

转载 作者:太空狗 更新时间:2023-10-29 16:28:39 25 4
gpt4 key购买 nike

我将 ptr 创建为指向 5 个字符的数组的指针。

char (*ptr)[5];

分配给它一个字符数组的地址。

char arr[5] = {'a','b','c','d','e'};
ptr = &arr;

我可以使用指针 ptr 访问此数组中的 char 值吗?

printf("\nvalue:%c", *(ptr+0));

它不打印值。

在我的理解中,ptr 将包含数组的基地址,但它实际上指向完整数组所需的内存(即 5 个字符)。因此,当 ptr 递增时,它会向前移动 sizeof(char)*5 字节。那么是不是不能使用这个指向数组的指针来访问数组的值呢?

最佳答案

当你想访问一个元素时,你必须先解引用你的指针,然后索引你想要的元素(这也是解引用)。即你需要做:

printf("\nvalue:%c", (*ptr)[0]); ,与 *((*ptr)+0) 相同

请注意,使用指向数组的指针在 C 语言中并不常见。取而代之的是,人们只使用指向数组中第一个元素的指针,并将长度作为单独的元素处理,或者在数组的末尾,因此可以了解数组何时结束,例如

char arr[5] = {'a','b','c','d','e',0}; 
char *ptr = arr; //same as char *ptr = &arr[0]

printf("\nvalue:%c", ptr[0]);

关于c - 使用指向 char 数组的指针,可以访问该数组中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7280379/

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