- 二.指针变量
- 1.指针变量的定义
- 一般形式
- 定义指针变量应注意的问题
- 2.指针变量的引用
- 初识两个操作符 * ,&
- 代码分析
- 指针变量前面的” * “,表示该变量的类型为指针型变量;
类型说明符 * 变量名;
float *pointer_1; //指针变量名是 pointer_1 ,而不是*pointer_1;
- 类型说明书=符表示本指针变量所指向的变量的数据类型;
- *表示这是一个指针变量,(下面有具体的例子,不懂的可以参考);
- 变量名即为定义的指针变量名;
- 举例合法的指针变量定义:
int *pointer_3;//pointer_3是指向int型变量的指针变量 char *pointer_4;//pointer_4是指向char型变量的指针变量 //pointer中文翻译是 指针
- 可以用赋值语句是一个指针变量得到另一个变量的地址,从而使它指向一个该变量
- GNC GCC编译器为指针变量分配的存储空间大小为4字节
我使用的是codeblocks软件,如果有谁想下载可以点开下面的链接,按步骤下载
codeblocks软件下载链接
- 在定义指针变量时必须指定基类型;
- 基类型:数据类型表示该指针变量所指向的变量的数据类型,又称基类型;
- 只有在整型变量的地址才能存放到指向整型变量的指针变量中;
- 指针变量若没有赋值或者未初始化不可使用,要有明确的指向
- 取地址运算符 ’ & ‘(单目运算符)
功能:取变量的地址 - 取内容运算符’ * ‘ 也叫取值运算符(单目运算符)
功能:取指针所指向的内存单元的值;
#includeint main() { int i=100; int j=110; int *pointer_1,*pointer_2;//这里的*不是取值操作符,仅定义指针函数 pointer_1 = &i; pointer_2 = &j; printf("%dn%dn",*pointer_1,*pointer_2); return 0;
自己可以动手写代码,多练习几遍;
- 以下是错误的赋值示范:
float a; short *pointerr_1; pointer_1 = &a;
- 将float型变量的地址放到指向整型变量的指针变量中
- 不同的编译器不同的数据类型所占字节不同,这里以GNU GCC编译器为例
- 所占字节不同导致结果输出错误
- 类型一定要对应! ! !
- 指针变量中只能存放地址(地址);
举个例子:通过指针变量访问整型变量
还是上次举个例子
#includeint main() { int a,b;(1) int *pointer_1,*pointer_2;//(2) a=100;b=10; pointer_1 = &a; pointer_2 = &b;(3) printf("%d,%dn",a,b); printf("%d,%dn",*pointer_1,*pointer_2); return 0; }
如果做了两遍还不理解代码为什么这么写,那跟我一起慢慢分析
大括号里的每一步我都会慢慢来分析,不会不要紧,哪里不懂可以私信我或者在评论区提出疑惑,个人喜欢数码,基本能秒回的那种
- 先定义整型函数 a,b;还有定义指针变量;
- 第二行的 * 不是取值运算符,而是仅用来定义指针变量,这个要注意;
再复习一点,指针变量一定要有明确的指向才能使用,那么在这里pointer_1还有pointer_2存放的都是地址; - 下一步为 a,b 进行赋值;并且说明这两个指针变量指的地址是谁的;
- 不要忘了 & 这个符号是取地址运算符,如果不带则无法说明指向的是地址,而是值;
- 接下来就开始输出,正好可以验证你的代码有没有问题,或者哪一步的思路错了·



