相关疑难解决方法(0)

将数组作为参数传递给C中的函数

我写了一个包含数组作为参数的函数,并通过传递数组的值来调用它,如下所示.

void arraytest(int a[])
{
    // changed the array a
    a[0]=a[0]+a[1];
    a[1]=a[0]-a[1];
    a[0]=a[0]-a[1];
}

void main()
{
    int arr[]={1,2};
    printf("%d \t %d",arr[0],arr[1]);
    arraytest(arr);
    printf("\n After calling fun arr contains: %d\t %d",arr[0],arr[1]);
}
Run Code Online (Sandbox Code Playgroud)

我发现虽然我arraytest()通过传递值调用函数,但原始副本int arr[]已更改.

你能解释一下原因吗?

c arrays

71
推荐指数
9
解决办法
16万
查看次数

数组的地址 - 具有&符号和没有&符号之间的区别

我有一个看起来像这样的结构:

struct packet {
  int a;
  char data[500];
};
typedef struct packet packet_t;
Run Code Online (Sandbox Code Playgroud)

我有点困惑为什么以下代码为每个printf输出相同的地址:

void myfunction() {
  packet_t packet;
  printf("%p\n", packet.data);   //e.g., outputs 0x7fff1c323c9c
  printf("%p\n", &packet.data);  //e.g., outputs 0x7fff1c323c9c
}
Run Code Online (Sandbox Code Playgroud)

有没有人对此有一个很好的解释?

c

8
推荐指数
2
解决办法
6280
查看次数

标签 统计

c ×2

arrays ×1