首页 > 代码库 > 黑马程序员----指针
黑马程序员----指针
指针:
格式:
变量类型 *变量名; 如:int *p;
注意点:
1.指针变量只能存储地址;
2.指针就一个作用,能够根据一个地址值,访问对应的存储空间;
3.指针变量p前面的int,代表p只能指向int类型的数据;
注:
在64位编译器中,指针变量都是占用8个字节,但是为什么还要分为:char *p; int *p;等,是因为在取值时,*p会从p存储的地址开始,取一定的字节(如:int就会从p所存储的地址开始向下4个字节)
一、指针的基本使用
例:
int *p; // 定义了一个指向int类型数据的指针变量p
int a = 90; // 定义了一个int类型的数据a = 90
p = &a; // &a :取得变量a的地址,并且赋值给指针变量p
*p = 10; // 对p所指向的存储空间赋值(*)
解析:a = 90 --> 10;
注意点:
int *p; 中的*和*p = 10;中的*意思是不一样的;
int *p;中的*代表一个指针变量(标志)
*p = 10;中的*代表对p指向的存储空间进行赋值
代码练习一:
运行结果:
二、指针变量的使用注意
注意点一:
// 不建议这样写 int *p 只能指向int类型的数据 // 警告: warning: incompatible pointer types assigning to ‘int *‘ from ‘double *‘ [-Wincompatible-pointer-types] int *p; double a = 10.0; p = &a;
注意点二:
// 指针变量只能存储地址 // 警告(warning: incompatible integer to pointer conversion assigning to ‘int *‘ from ‘int‘ [-Wint-conversion]) int *p; p = 200;
注意点三:
// 指针变量未经过初始化,不要拿来间接访问其指向的存储空间(不明确) // 没有警告、输出0 int *p; printf("%d\n", *p);
注意点四:
// 定义变量时的*仅仅是一个象征,没有其他特殊含义 int a = 9; int *p = &a; // 定义变量时的*仅仅是一个象征,没有其他特殊含义 // *p = &a; // 不正确的写法
// 报警(warning: incompatible pointer to integer
conversion assigning to ‘int‘ from ‘int *‘; remove & [-Wint-conversion]) p = &a; *p = 20; // 这里的*的作用:访问(赋值)指针变量p指向的存储空间 printf("%d\n", a);
代码练习:
运行结果:
黑马程序员----指针
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。