C语言灵魂——指针(1)(适合小白)

242 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 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语言的小伙伴,欢迎一起交流学习,等你哟~~

image.png