C语言指针
1.指针变量概念及其定义方法
1)指针变量:用来存放地址的变量就是指针变量
2)指针:就是一个地址
3)指针变量的定义:
数据类型 *指针变量名;
int *p; 定义了一个指针变量,变量名是p
int 表示p只能存放int类型的变量的地址
char *p1; 定义了一个指针变量,变量名是p1
p1只能存放一个char类型的变量的地址
int num =10;
char *p = # 警告:
4)指针变量定义的注意事项
1)"*"必须的有,如果没有就相当于定义了一个普通变量
2)指针变量能用来存放数值或者字符之类的吗? 不能
3)一个类型的指针只能指向同类型的变量,不能指向其他类型的变量
4)指针也可以声明为全局、静态局和局部变量。
2.指针变量的初始化和引用
#include <stdio.h>
int main(int argc, constchar * argv[]) {
定义两个变量,并且给变量进行初始化 a =4,b= 5
int a = 4,b =5;
先定义变量再初始化变量值
int a1;
a1 = 10;
指针变量也是变量
指针变量的使用:定义指针变量 ---> 初始化指针变量 --->使用(使用指针变量间接的存取内存单元的值)
指针变量如果不初始化会有什么后果?
结论:如果一个指针变量定义以后如果不进行初始化,这个指针变量存放的是一个垃圾数,这个指针变量,称之为 “野指针”
要避免操作野指针,以为有可能会带来意想不到的错误
int *p10; 值是一个垃圾值,有可能它存放的是系统程序的一个地址
*p10 =438; 可能会造成系统崩溃
p10 = &a;
指针变量如何进行初始化,指针变量应该用地址初始化
1)定义同时进行初始化
1)完全初始化
int *p = &a; 用a的地址初始化p 这个指针变量
另外一种描述方法:p 指向了a
int *p1 = &a, *p2 = &a; p1,p2都在指向了a
2) 部分初始化
int *p3 = &b, *p4; 定义了两个指针变量p3 p4
p4 = &b;
2)先定义后初始化
int *p7;
p7 = NULL;
3)如果定义了一个指针变量,但是不知道让这个指针指向谁
int *p5 = NULL; NULL 是空(0)
int *p6 = 0; 空
把一个指针赋值为空,代表什么也不指
常见的容易犯的错误
int *p8 = 1000; 杜绝这种写法
p6 = p1; p6指向了a
******************************
2、用*来获取指针变量指向的存储单元的内容
定义了一个整型变量 *p1 ,p1 是一个指针变量
*指针变量 作用:是获取指针变量指向的内存空间的内容
获取指针变量所对应的存储单元
int value = *p1; 4
给指针变量指向的内存单元赋值
*p1 = 100;
value = *p1; 100
printf("value = %d\n",a);
总结:“*”的两种用法
1)用于定义一个指针变量
2)获取值
3)存取指针变量指向存储空间的内容
return0;
}