一级指针真真的用法

2014-11-23 22:54:41 · 作者: · 浏览: 0


#include

#include

/*

总结:不管他前面有几个心

*/

Void getData01(char *p1)

//char *p 形参 行参 元素被调用该函数的参数,只不过具有对外属性而已

{

Printf(“getData01() begin\n”);

Return;

}

Void getdata02(char **p2)//char **p2 行参 p2是变量

{

Printf(“getData01() begin\n”);

Return;

}

Void getdata03(char *******p7)*******p7 行参 p2是变量

{

Printf(“getData01() begin\n”);

return ;

}

Void main()

{

Int *p1=null;

Int **p2=null;

Int a=10;

Int *p3=null;

Int c=0;

a=20;//直接通过变量修改a的值

P3=&a;//将a的地址赋值给p3

P3=30;//间接的修改p3的值

C=*p3;

//将p3的里面的值,赋值给c;注意不是地址,解释*p3里面放着的a的地址,a=20,在将 20赋值给c;

总结:*p的意义,*就像一把钥匙,根据一个指针的值,去修改后面的内存空间

/*

While(*p!=’\0’)

{

*p++ = *p2++;

解释 p2++是取值,取出来的值赋值给*p++

}

*/

}

//练习

Void main()

{

Char *p1=null;

//定义一个char类型的指针变量p1,将p1的值赋值为null;

Char *p2=null;

//定义一个char类型的指针变量p2,将p2的值赋值为null;

Char buf1[100]={0};

//定义一个char类型的数组为buff1,其中的buf1的元素个数是100个

Char buf2[100]={0};

//定义一个char类型的数组为buff2,其中的buf2的元素个数是100个

Strcpy(buf,”abcdefg”)

P1=buf1;

//将buf1的首地址赋值给p1

P2=buf2;

//将buf2的首地址赋值给p2

While(*p1 !=’\0’)

{

*p2=*p1;

//*放在左边是赋值

//*放在右边是取里面的值

P2++;//向后移动一个字节,如果是int类型的话就移动4个字节

P1++;

}

}

重点

问一下你是怎么理解下面的指针的

1、对参数的指针类型应该怎么理解

a) 理解角度需要从两个角度出发

i. 占在c/c++编译器的角度对型参,如果是指针类型,c编译器只会分配4个字节

ii. Char *p形参 p是变量

2、指针的数据类型到底是什么

a) 指针的数据类型是值它所指的内存空间的数据类型

i. 指针的数据类型具有依附特性

结论:指针的补长,根据所指内存空间类型来定

void senddata01(char *p1); void senddata01(char* p1);

void senddata02(char ** p1); void senddata02(char * *p1); void senddata02(char **p1);

void senddata03(char ***p1);

void senddata04(char *p[]); void senddata04(char * p[]); void senddata04(char *p []);

void senddata05(char (*p)[10]); void senddata05(char (*p) [10]);

void senddata05(char *****p4);