您的位置:首页 > 编程语言 > C语言/C++

黑马程序员--C语言指针

2015-10-17 13:43 239 查看
-----------android培训、java培训、java学习型技术博客、期待与您交流!------------

-----------并不是生来就是大神、代码量决定一切、其他都是假象、-----------

问:为什么要学习指针

答:省去了去银行拿号 排队 输入密码 签名 等等的所有步骤, 直接到金库里抓钱的赶脚


一、指针的的定义

1. 格式:变量类型 * 变量名

int * p

2. 作用:指针就一个作用,能够根据一个地址值,找到对应的存储空间

3. int *p; //定义了一个指针变量p,p的作用在于存储地址

int a = 10;

p = &a; //指针变量p指向了变量a的地址

*p=20; // 访问指针变量p指向的存储空间,并把a的值改为20

printf(“%d”, *p);

4. 指针变量p前面的 int表示指针变量只能指向int类型的数据

*指针的使用注意:

(1)int *p 只能指向int类型的数据

(2)指针变量只能存储地址 (int*p p=20 这种写法是错误的)

(3)指针变量未经过初始化,不要拿来直接访问其他存储空间 (int*p; printf("%d\n,*p")这种写法也是错误的)

5. int *p ; p=&a 等价于 int *p = &a

6. 所有类型的指针都占8个字节

7. 指向指针的指针

int **pp

二、指针和函数

1. 指向函数的指针

int *p(int ,int);

p=test; //定义一个指针变量p指向test函数

p左边的int:指针变量p指向的函数返回int类型的数据

p右边的int:指针变量p指向的函数有两个int类型的形参

2. 返回指针的函数

char * test () //test 函数返回一个char类型的指针

{

}

三、指针和数组

1. 指针访问数组元素

int ages[5]={10,9,8,67,56};

int *p;

p=&ages[0]; //指针变量p指向数组的首元素,也可以写成p=ages,因为数组名就是数组的地址,也是数组首元素的地址

此时的 p--->&ages[0]

p+1--->&ages[1]

..............

p+i--->&ages[i]

*结 论:数组元素的访问方式有三种

(1)数组名[下标] ages[i]

(2)指针变量名[下标] p[i]

(3)*(p+i)

2. 指针遍历数组元素

for (int i=0;i<5,i++)

{

printf("ages[%d]=%d\n",i, *(p+1));

}

3. 指针数组

char *names[5]={"jack","rose"}

四、指针和字符串

1. 指针字符串: char *name="it" //指针变量name指向字符串首字母

2. 字符串的输入

char name[20];

printf("请输入姓名:\n",name);

scanf("%s",name);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: