| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
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 的值就发生了改变; 
只是指针指向变量的,数组的好像不一样。  
 
 
 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |