C语言篇章六——指针

指针

启动一个程序,系统在内存上给程序分配一块内存空间32位4G一个一个字节组成的,每个字节都会有地址编号内存的空间是
地址:内存的编号
我们把这个编号(地址)t也叫做指针

指针变量
存放指针(地址)的变量
因为地址编号(Ox0000 0000)如此,所以我们的指针变量占4个字节就可以存下
64位编译器,内存的编号范围是Ox00000000000oo0 - oxf1f,这样的编号需要8个字节存下,所以指针变量也需要8个字节

#include <stdio.h>
#include <string.h>



int main()
{
	int a = 10;
	//定义指针三步骤
	//1 *与符号结合是一个指针变量
	//2 要保存谁的地址,将他的定义形式放在此处
	//3 用*p替换掉定义的变量

	int* p;
	p = &a;

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

	return 0;
}

野指针 空指针

#include <stdio.h>
#include <string.h>



int main()
{
	int a = 10;
	int* p;
	*p = 200;  //野指针就是没有初始化的指针  指针方向是随机的,不可以操作野指针
	printf("%d\n", *p);

	int* p1 = NULL; //给指针p1的内容赋值为0

	void* p2 = (void*)&a;  //万能指针可以保存任意的地址
	printf("%d\n", *(int*)p2);

	int* const p4 = &a; // 可以修改值
	*p4 = 200;
	const int* p5 = &a;  // 可以修改指针
	p5 = NULL;

	return 0;
}

数组与指针

#include <stdio.h>
#include <string.h>



int main()
{
	int a[10] = { 1,2,3,4,5,6,7,8,9,10 }; // 数组地址在内存中是连续的
	int* p = a;// 指针p保存数组的首元素地址
	for (int i = 0; i < sizeof(a) / sizeof(int); i++)
	{
		printf("%d ", *(p + i));
	}

	return 0;
}

指针与字符数组

#include <stdio.h>
#include <string.h>



int main()
{
	char a[] = "helloworld"; //定义一个字符数组,内容helloworld\0
	char* p = a;
	printf("%s", p);   //只需要字符数组的首地址

	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值