C语言基础整理 (4):指针补充、字符串、动态内存

指针补充

地址 + 1 : 加了一个单位(即数据类型长度)的地址
	char* + 1 加个1个字节
	int* + 1 加了4个字节
	
一同声明多个指针变量:
	int *pa,*pb;//pa和pb都是 int* 类型
	int *pc,pd; //pc是int *类型  pd是int类型
	
指针的应用:
	1.作为函数的参数
	2.作为函数的返回值(静态局部变量 全局变量 形参的值(指针))
		注意:函数中不能返回局部变量的地址  因为局部变量地址在函数调用之后会被回收
	
void * :  万能指针
	万能指针变量 可以 保存任何类型的内存地址
	注意: void *指针不能进行取 * 操作

指针和数组:

数组名是一个只读变量  这是数组名和普通指针的区别

数组名是数组元素的首地址,也是数组中第一个元素的地址

数组在作为函数的参数传递时,其实是传递的是数组元素的首地址

在函数中,数组名已经退化成一个指针,所以在函数时需要传递数组长度

[]下标运算符:
	arr[i]	==  *(arr+i)
	数组下标为什么从0开始?  因为第一个元素的偏移量为0,即第一个元素的地址就是数组名的地址。

数组名: 
	是一个不可以修改的"指针"  数组名不能作为左值

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

*p++  ==>  先取 *p  然后再 p++
(*p)++  ==>  先取 *p  然后把这个值再增加1

在函数的形参列表中: int arr[10] arr不是数组 本质上是 int *arr

字符串

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值