void increase(int* i)
{
(*i)++;
}
int main(void)
{
int i = 7;
printf(“Value of i is %d”, i); // i is 7
increase(&i);
printf(“Value of i is %d”, i); // i is 8
return 0;
}看不懂,请解释
void increase(int* i)
{
(*i)++;
}
int main(void)
{
int i = 7;
printf(“Value of i is %d”, i); // i is 7
increase(&i);
printf(“Value of i is %d”, i); // i is 8
return 0;
}看不懂,请解释
int&是引用类型,而int*是指向int类型变量的指针类型。
void chat(int&a)
{
a=20;
}
调用此函数:
int x=100;
chat(x); // 此时x的值变为20了
如果函数如下:
void chat (int*a)
{
*a=20;
}
调用:
int x=10;
chat(&x); //此时x的值也会变为20;
向chat(int&a)传递参数的时候例如chat(x)此时a与x同样代表一块内存空间,而chat(int*a)调用的时候:chat(&x);此时a里面的值就是&x,也就是x代表的内存的首地址。
这个很简单啊
第一个是7就不用解释了把
第二个
首先int i=7,在内存的栈中分配了一个地址给 i
就是传 i 的地址过去
increase()方法中通过
*i 来得到传过来的地址里面的值
然后给其实是给 i++
所以后面打出的是8咯
void increase(int* i)//void是函数无返回值, int是定义一个整型指针
{
(*i)++;//递加
}
int main(void)//主函数定义成int型
{
int i = 7;// i进行赋值
printf(“Value of i is %d”, i); // i is 7
increase(&i);// 因为i是指针, 取指针地址来进行计算
printf(“Value of i is %d”, i); // 递加以后i值为8
return 0;//无返回值
}