gpt4 book ai didi

c - C指针怎么可以这样作为函数的形参呢?

转载 作者:行者123 更新时间:2023-11-30 18:11:36 25 4
gpt4 key购买 nike

C Primer Plus Book 的章节指针中有一个示例。

我对将数组名称设置为 sump 函数作为形式参数的代码感到非常困惑

Answer = sump(array, array + SIZE);

开始是00EFFBD8 ,没关系,这意味着 arrary[0]地址但当它 Action 时:

int *end = array +SIZE // => "array[0] address + 10"

为什么结尾是00EFFC00 (00EFFBD8 + 10*4) ,为什么不00EFFBD8 +10 ???

enter image description here

#include <stdio.h>

#array size
#define SIZE 10

#sum function
int sump(int *start, int *end);

int main(void)
{
int array[SIZE] = { 10,9,8,7,6,5,4,3,2,1 };
long Answer;

Answer = sump(array, array + SIZE);
printf("a is %d\n", Answer);

return 0;
}

int sump(int *start, int *end)
{
int total=0;

while (start < end)
{
printf("start is %p, %d\n", start, *start);
printf("end is %p, %d\n", end, *end);
total += *start++;
}

return total;
}

最佳答案

当向地址(数组/指针)添加某些内容时,向地址加一意味着强制特定指针指向序列中下一个元素的起始字节,而不是下一个字节。访问下一个字节没有意义,因为当 int 存储在 4 个字节中时,您会如何处理奇怪的结果。

关于c - C指针怎么可以这样作为函数的形参呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45725494/

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