开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 4 天,点击查看活动详情。
一、指针是什么
1、指针定义
-
指针,就是内存中的一个地址编号;
-
指针变量,其作用是指针变量用于存储地;
-
这里需要注意的是指针变量也是一个变量。
下面分享一段学习时的程序,仅供参考
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main0101()
{
int a = 0xaabbccdd;
//a = 100;
printf("%p\n", &a);
getchar();
return EXIT_SUCCESS;
}
int main0102(void)
{
//定义指针变量存储变量地址
int a = 10;
//指针类型 -> 数据类型*
int* p;
p = &a;
//通过指针间接改变变量的值
*p = 100;
printf("%p\n", &a);
printf("%p\n", p);
printf("%d\n", a);
printf("%d\n", *p);
return 0;
}
int main0103(void)
{
//char ch = 'a';
//char* p = &ch;
int a = 10;
//int* p = &a;
//&是取地址符号是升维度的
//*是取值符号是降维度的
int* p = &a;
*p = 100;
//指针在内存中占的字节大小
printf("%d\n", sizeof(char*));
printf("%d\n", sizeof(int*));
printf("%d\n", sizeof(short*));
printf("%d\n", sizeof(long*));
printf("%d\n", sizeof(long long*));
printf("%d\n", sizeof(float*));
printf("%d\n", sizeof(double*));
return 0;
}
int main0104()
{
char ch = 97;
int* p = &ch;
//*p = 123456;
printf("%d\n", ch);
printf("%d\n", *p);
//printf("%p\n", p);
//printf("%p\n", &ch);
return 0;
}
2、指针赋值
1 两个变量 普通变量 指针变量
2 建立关系 指针变量=&普通变量
3 通过*运算符赋值*指针变量=值
3、指针大小
-
在32位操作系统下所有指针类型都是4个字节大小
-
在64位操作系统下所有指针类型都是8个字节大小
4、指针类型
-
野指针:指针变量指向一个未知的空间,这里注意一个问题,操作野指针对应的内存空间可能报错;
-
空指针:指针变量指向内存编号为0的空间,
#define NULL ((void*)0)操作空指针对应的内存空会报错;在程序中用作于条件判断;
-
万能指针:
void*可以将所有指针类型赋值给万能指针,万能指针一般用作于函数形参。
5、const修饰的指针
一、通过指针改变常量的值
二、const修饰的指针类型
三、const修饰的指针变量
四、const修饰指针类型修饰指针变量 常量指针
写在文末
这是本人在学习C语言过程中的点滴记录,希望分享出来能与大家一起进步,如有表达不足或者有错误的地方,恳请大家积极批评指正!!
如有和本人一样正在学习C语言的小伙伴,欢迎一起交流学习,等你哟~~