如何通过被调用函数修改主函数普通变量的值

1.实参必须为该普通变量的地址

2.形参必须为指针变量

3.我们可以通过指针变量所指向的地址来更改 i 的值。
(---------------------------------------

 

  1. #include <stdio.h> 
  2.  
  3. void show(int *p) 
  4.  *p = 11; 
  5. int main(void
  6.  int i = 8;  //实参  
  7.  show(&i);   
  8.  printf("%d\n",i); 
  9.  return 0; 

---------------------------------------)

指针与数组

指针与一维数组

 一维数组名:

  一维数组名是个指针的常量
  以16进制的方式输出为: %#X
  它存放的永远都是第一个元素的地址
 
 下标和指针的关系:

 如果p是个指针变量,则p[i]永远等于*[p+i];
 int a[3] = (1,2,3);
 a[0]  代表第一个数字  , 指针表示方法:  *a
 因为:
  a代表的是:一个一维数组的第一个元素的地址,(a+1)代表第二个元素的地址 .


确定一个一维数组需要几个参数?【如果一个函数要处理一个数组,则需要接受该数组的那些信息】?

需要两个参数:
  接收数组的第一个元素的地址 (为什么需要用到*p 指针变量来接受呢? )因为一维数组其实就是指针常量 它的变量名其实就是第一个元素的地址 
  数组的长度

 

  1. #include <stdio.h> 
  2.  
  3. void show(int *p) // a[0] 
  4.  *(p+2) = 88;   
  5. int main(void
  6.  int a[5] = {1,2,3,4,5};  //一个一维数组其实就是一个指针常量  
  7.  //我输出a 就代表了输出 *a[0]元素的值  
  8.  int i = 0; 
  9.  
  10.  show(a); //a 其实一维数组就是一个指针常量 ,也就是把数组里面的第一个元素的地址传递过去! 
  11.  for (i=0;i<5;i++) 
  12.  { 
  13.   printf("%d,",(a[i]));  // 1,2,3,4,5  
  14.  } 
  15.  printf("\n"); 
  16.  return 0; 
  17.  
  18.