如何通过被调用函数修改主函数普通变量的值
1.实参必须为该普通变量的地址
2.形参必须为指针变量
3.我们可以通过指针变量所指向的地址来更改 i 的值。
(---------------------------------------
- #include <stdio.h>
- void show(int *p)
- {
- *p = 11;
- }
- int main(void)
- {
- int i = 8; //实参
- show(&i);
- printf("%d\n",i);
- return 0;
- }
---------------------------------------)
指针与数组
指针与一维数组
一维数组名:
一维数组名是个指针的常量
以16进制的方式输出为: %#X
它存放的永远都是第一个元素的地址
下标和指针的关系:
如果p是个指针变量,则p[i]永远等于*[p+i];
int a[3] = (1,2,3);
a[0] 代表第一个数字 , 指针表示方法: *a
因为:
a代表的是:一个一维数组的第一个元素的地址,(a+1)代表第二个元素的地址 .
确定一个一维数组需要几个参数?【如果一个函数要处理一个数组,则需要接受该数组的那些信息】?
需要两个参数:
接收数组的第一个元素的地址 (为什么需要用到*p 指针变量来接受呢? )因为一维数组其实就是指针常量 它的变量名其实就是第一个元素的地址
数组的长度
- #include <stdio.h>
- void show(int *p) // a[0]
- {
- *(p+2) = 88;
- }
- int main(void)
- {
- int a[5] = {1,2,3,4,5}; //一个一维数组其实就是一个指针常量
- //我输出a 就代表了输出 *a[0]元素的值
- int i = 0;
- show(a); //a 其实一维数组就是一个指针常量 ,也就是把数组里面的第一个元素的地址传递过去!
- for (i=0;i<5;i++)
- {
- printf("%d,",(a[i])); // 1,2,3,4,5
- }
- printf("\n");
- return 0;
- }