赞
踩
指针这部分,还是要多写多看,反复翻看笔记。
2. 下面的例子,把指针作为函数的参数,可以直接修改一些外部的变量值。见注释.
- #include<stdio.h>
- #include<string.h>
-
- void add(int* p) {
- // 1.传入的 *p, 表示 指针 p, 即 p 是一个指针。
-
- // 2. 下面这个 *p, 指的是 取值, 即具体的值。
- // 由于直接在内存地址上操作了,所以返回类型是 void,
- // 但是实际上,p 的值已经被修改了。
- *p = *p + 1;
- }
-
-
- int main() {
-
- int a = 1;
- printf("a is %d\n", a); // 输出 a is 1
-
- int *pa = &a;
- add(pa);
- printf("a is %d\n", a); // 输出 a is 2
-
- return 0;
- }
示例代码:
- #include <stdio.h>
- #include <string.h>
-
-
- // 使用指针来遍历数组
- int main(void) {
-
- // 在C语言中,数组名data可以被视为指向数组第一个元素的指针。
- int data[5] = {1, 2, 3};
-
- for (int i=0; i< 5; ++i){
-
- // (data + i), 即为数组元素的地址, 可以当做是一个指针!
- printf("data[i] address is: %p\n", (data + i));
-
- // *(data + i), 即为数组元素的值. 就是 取值符
- printf("data[i] is: %d\n", *(data + i));
-
- }
-
- return 0;
- }
-
- // 输出:
-
- // data[i] address is: 00000032a09ffa90
- // data[i] is: 1
- // data[i] address is: 00000032a09ffa94
- // data[i] is: 2
- // data[i] address is: 00000032a09ffa98
- // data[i] is: 3
- // data[i] address is: 00000032a09ffa9c
- // data[i] is: 0
- // data[i] address is: 00000032a09ffaa0
- // data[i] is: 0
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。