c语言指针的简单使用

内存

变量在内存中储存,可以通过变量名来获取,也可以通过变量地址值来获取

指针是一种数据类型

无论是什么类型的指针,存的都是地址,内存地址都是无符号整型的,所以都是4个字节大小

格式:

 数据类型 * 指针名
    int a=10;

   int* p=&a;
   p是指针类型变量 用来指向一个变量的地址

   变量的地址值通过&(地址符)获取

通过指针修改变量的值

*p代表值

指针前面加*代表取这个指针的值

 int a=10;
  int* p=&a;
*p=20;
p代表地址值

sizeof()指针在内存中的大小

 32位系统中,所有指针地址都是4个字节

 64位系统中,所有的指针地址都是8个字节大小
 内存编号0-255都是系统保留的,不能读,不能写

野指针、空指针、万能指针

野指针

野指针是指向一个未知的内存空间 可能在读写的时候出现错误

空指针

空指针是指向内存编号为0的空间,操作该内存空间会报错,一般情况NULL用作于程序条件判断

万能指针

int a=10;
void* p=&a; 
*(int*)p=20;

万能指针赋值要先强转到对应的类型

修饰指针

通过const修饰

const修饰的变量可以通过1级指针地址值修改一个常量的值,不能直接改值。

const int a=10
a=30;(错误)

如果const修饰指针数据类型(int *) 类型,可以改变指针指向的地址

int a=10;
int b;
const int* p=&b;
*p=20;(错误)
p=&a;(可以)

const修饰指针变量,可以改变指针变量指向的内存地址的值

int * const p=&a;

const修饰指针变量和指针数据类型,都不可以通过一级指针修改,可以通过二级指针修改

const int *const p=&a;
//**就是二级指针
(int**pp=&p
**PP=20;)

指针与数组

数组名是数组的首地址,这是一个常量

通过指针操作数组

例1:

int arr[] = { 1,2,3,4,5,6,7,8,9 };

	int* p = arr;
	for (int i = 0; i < 9; ++i)
	{
		printf("%d ", p[i]);
	}

例2:

printf("\n");
	for (int i = 0; i < 9; ++i)
	{
		printf("%d ", *(p+i));
	}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值