|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
void f(int* p);
void g(int k);
int main(void)
{
int i = 6;
printf("&i=%p\n", &i);
f(&i);
g(i);
return 0;
}
void f(int* p)
{
printf(" p=%p\n", p);
printf(" *p=%d\n", *p);
*p = 30;
}
void g(int k)
{
printf(" k=%d\n", k);
}
想问下如果没有*p = 30 那么K= 6即i的值没有改变,而写了*p= 30 后,k = 30即i的值被*p改变了,这是为什么啊?
调用函数f(&i)时
- void f(int* p) //传入的实参是变量 i 的地址, p 就指向了变量 i ;
- {
- printf(" p=%p\n", p);
- printf(" *p=%d\n", *p); //打印指针变量p指向的变量的值6
- *p = 30; //将30赋值给指针p所指向的变量 i , i 的值被改变成了30;如果没有这句话 i 的值是不变的,调用g(i)就输出 i 的值 6;
- }
复制代码
下面是我对小甲鱼老师讲的指针的理解:
int i =1 , a;
int *p ; //定义指针
p = & i; //指针p指向变量 i ;
a = *p; //把指针指向的变量的值赋给 a , a = 1 ;
*p = 100; //把100赋值给指针p指向的变量 i (此处*p 与 i 是等价的),变量 i 的值就发生了改变;
只是指针指向变量的,数组的好像不一样。
|
评分
-
查看全部评分
|