c语言自学指针,C语言指针学习

人生最大的遗憾不是你错过最好的人,而是你错过了那个最想对你好的人。。。

----  网易云热评

一、指针概念

1、指针:内存区的每个字节都有一个编号,这个编号就是内存地址,也就是我们说的指针

2、指针变量:指针变量是存放地址的变量

3、指针也是一种数据类型

int * p;p是变量,int*是数据类型

4、万能指针:void *  可以指向任意类型指针

5、指针步长:void *步长无法确定,所以需要转换,int *步长为4,char *步长为1

6、const:修饰指针,表示该指针是只读状态,不能修改

二、实例应用

#include

int * p;

int a = 11;

int main() {

p = &a;

printf("a的内存地址:%p\n", p);

printf("a的值:%d\n", *p);

*p = 22;  //相当于给a赋值

printf("a的值:%d\n", *p);

system("pause");

return 0;

}

&:取a的内存地址

*:取内存地址的值

c92dade9e75a

三、野指针和空指针

1、只有定义后的变量,变量地址才是合法的地址

2、直接指定一个地址都是不合法的,这些不合法的地址就是野指针

3、操作野指针会引起各种报错

int *p=0x1234;

4、空指针:int *p=NULL,为了防止野指针的出现

四、指针大小,32位编译器为4,,64位编译器为8

#include

int main() {

int a = sizeof(int *);

int b = sizeof(double*);

char* p;

int c = sizeof(p);

printf("int *的大小为:%d\n", a);

printf("double *的大小为:%d\n", b);

printf("char *的大小为:%d\n", c);

system("pause");

return 0;

}

c92dade9e75a

五、多级指针

int a=1;

int *p=&a; //p存放着a地址

int **q=&p;//q存放着p的地址

int ***r=&q;//r存放着q的地址

*p=*(p+0)=p[0]

六、指针函数

int *fun(); 返回值是指针类型,返回的是全局变量的地址,如果返回局部变量地址会报错,函数执行完,局部变量会释放

#include

int a;

int* fun()

{

return &a;

}

int main() {

int* p = NULL;

p = fun();

*p = 1;

printf("a=%d\n", *p);

system("pause");

return 0;

}

运行结果:a=1

欢迎关注公众号:顺便编点程

c92dade9e75a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值