今天做哈希表的时候有个地方卡了好久,就是不知道传指针数组的时候是传值还是传地址,机智的我想出了一种验证办法
#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
using namespace std;
int f(int *a[],int n)
{
int b[100]={0};
int i;
for(i=0;i<n;i++)
a[i]=&b[i];
}
int main()
{
int *a[100];
f(a,100);
for(int i=0;i<100;i++)
printf("%d\n",a[i]);
}
更巧的是当我把倒数第二行换成printf("%d\n",*(a[i]));时,竟然不是全0!因为我只是在函数中赋值0,函数返回之后就释放了所以内存中的值该是啥就是啥。