关于指针的说明1——指针.c

来源:互联网 发布:泰格软件好用吗 编辑:程序博客网 时间:2024/06/05 10:07
/*总结:1 值传递,  不能改变实参的值。      2 指针传递(一维),不能改变指针的值,可以改变指针所指向的值。      3 指针的地址传递(二维),可以改变指针(一维)的值,可以改变指针所指向的值。*/ #include "stdafx.h"#include <stdlib.h>void fun1(int *a) //函数传递地址给形参a,形参a改变,原来的实参不变{    int b = 3;    a = &b;}void fun2(int *a) //函数传递地址给形参a,地址所指向的值发生改变{    int b = 3;    *a = b;}void test1(){    int a = 1;    printf("&a = %p, a = %d\n", &a, a);   //result: &a = 0018FEF0, a = 1    fun1(&a);    printf("&a = %p, a = %d\n", &a, a);   //result: &a = 0018FEF0, a = 1}void test2(){    int a = 1;    printf("&a = %p, a = %d\n", &a, a);   //result: &a = 0018FEF0, a = 1    fun2(&a);    printf("&a = %p, a = %d\n", &a, a);   //result: &a = 0018FEF0, a = 3}void test3(){    int b = 1;    int *a = &b;    printf("a = %p, *a = %d\n", a, *a);  //result: a = 0018FEF0, *a = 1    fun1(a);    printf("a = %p, *a = %d\n", a, *a);  //result: a = 0018FEF0, *a = 1}void test4(){    int b = 1;    int *a = &b;    printf("a = %p, *a = %d\n", a, *a);  //result: a = 0018FEF0, *a = 1    fun2(a);    printf("a = %p, *a = %d\n", a, *a);  //result: a = 0018FEF0, *a = 3}void fun3(int **a)  //传递二维指针(指针的地址),改变地址的指向就是改变了一维指针{    int b = 3;    *a = &b;}void test5(){    int b = 1;    int *a = &b;    printf("a = %p, *a = %d\n", a, *a);  //result: a = 0018FEF0, *a = 1    fun3(&a);    printf("a = %p, *a = %d\n", a, *a);  //result: a = 0018FE90, *a = 3} int main(int argc, char* argv[]){    //test1();    //test2();    //test3();    //test4();    //test5();    return 0;}

0 0
原创粉丝点击