今天我将给大家用几个列子来解决我们在使用一级指针和二级指针时的困扰,让指针不在成为困扰我们写代码的绊脚石。
#include<stdio.h>
#include<stdlib.h>
//给整型指针a开辟n个整型空间
void Init_sum(int *a,int n)
{
a=(int *)malloc(sizeof(int)*n)
}
int main()
{
int *A=NULL;
Init(A,2);
for(int i=0;i<2;i++)
{
scanf("%d",&A[i]);
}
for(int i=0;i<2;i++)
{
printf("%d",A[i]);
}
}
以上代码是否是正确的呢?
可能你不禁泛起嘀咕:感觉没什么问题啊!
但事实是这个程序是错误的
接下来我们就解释为什么:
那么我们如何改正此代码呢?
void Init_sum(int **a,int n)
{
*a=(int *)malloc(sizeof(int)*n)
}
Init(&A,2);
我们只需要对Init_sum,和传参进行改造即可:参数由一级指针改为二级指针,传参是传地址。
图解: