c++⽆效指针判断_C语⾔—指针(pointer)and内存单元使
⽤!
点击蓝字关注我们
指针
⼀、指针和内存单元
指针(pointer):地址(指针是⼀个值为内存地址的变量)。char类型变量的值是字符,int 类型变量的值是整数,指针变量的值是地址
指针变量:⽤存储地址的变量。
内存单元:是计算机中内存最⼩的存储单元,内存单元⼤⼩:1字节(8bit位)
1)每个内存单元都有⼀个唯⼀的编号
2)这个内存单元的编号,称之为“地址”
⾼ int a = 10; 4字节(由int 决定)
Oxff030000 0000
Oxff020000 0000
Oxff010000 0000
Oxff000000 1010
低 ⼀个内存单元
⼆、指针的定义和使⽤
*p 作⽤:将 p 变量的内存取出,当成地址看待,到该地址对应的内存空间。如果做左值,存储数据到空间中,如果右值,取出空间中的
内存。
int a 70;int *p = &a; //解引⽤,间接引⽤
int main(void){ int a = 70; //定义指针变量,并使⽤a变量的地址,初始化 int* p = &a; a = 100; printf("*p = %d\n", *p); //右值 //解引⽤,间接引⽤ *p
void interchange(int* u, int* v);int main(void){ int x = 5, y = 10; printf("Originally x = %d and y = %d.\n", x,y); //打印⽬前的值 interchange(&x, &y); //地
间接运算符 * (indirection operator)出存储在 a 中的值,该运算符称之为解引⽤运算符(dereferencing operator).
指针类型⼤⼩。(指针算⼀种⾃定义数据类型,int *).
指针的⼤⼩,与类型⽆关,只与当前使⽤的平台架构有关,32位(4字节)、64位(8字节)。
sizeof 指针int main(void){ printf("int *的⼤⼩:%u\n", sizeof(int *)); printf("short *的⼤⼩:%u\n", sizeof(short *)); printf("char *的⼤⼩:%u\n", sizeof(char *)); printf("lo 可以在⼀条语句中,同时定义多个指针变量、普通变量。
int a,b,c; //多个普通变量int *p1, *p2, *p3; //多个指针变量,每个变量都有⼀个⾃⼰的 * !int a, *b, *c ,d; //定义整型变量 a 、d,同时定义指针变量b 、c;
空指针和野指针
1、没有使⽤“有效”的地址,给指针初始化。
int *p; //没有给 p 指定⼀个有效的地址*p =100;
2、p 指针变量有值,但是该值不是⼀个有效地址
int *p =20;*p = 200; //写程序⼀定要杜绝野指针
空指针
空 ==NULL == 0 == \0;
int *p =NULL;//定义⼀个空指针*p =300;//*p 所指向的内存空间,是⼀个“⽆效访问区域”。
泛型指针(万能指针)
可以接受任意⼀种变量的地址,但是在使⽤时,必须借助“强制类型转换”。
void * 类型⼤⼩:32位(4字节)、64位(8字节)
int main(void){ printf("void *的⼤⼩:%u\n", sizeof(void*)); char ch = 'M'; void* p; //泛型指针 p = &ch; printf(" *p = %c\n", *(char*)p); //将 p 变量类型,由const 关键字 (修饰指针)
//⽅式1const int *p; //向后(右)作⽤⽰例int a = 10;int b = 20;const int *p =&a;*p = 100; //将a的值改为100,不能修改⽅式2int const *p; //向后(右)作⽤,常⽤在函数内
▼往期精彩回顾▼
这样使⽤ for 循环语句嵌套⽅法!!
字符格式化输⼊输出,表达式运算符do while循环
【学习】char类型与转义字符
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论