C语言数组指针笔记

C语言笔记

字符串:

获取字符串长度:strlen (头文件string.h)

拷贝字符串:strcpy和strncpy (注:目标字符串长度足以容纳原字符串,后者限定拷贝字符串)

连接字符串:strcat和strncat (注:后者自动追加结束符)

比较字符串:strcmp和strncmp (比较:一致则返回0 不一致第一个的ASCII小于第二个字符则返回小于0的值,反之亦然 strncmp用于指定固定的比较字符个数)

二维数组:

array是指向包含5个元素数组的指针

*(array+1)==array[1]
*(array+i)=array[i]
(*p)[3]=array[2][3]

注:注意下标的取值范围,防止数组越界访问。只有第一维的元素个数可以不写,其他维度的必须写上。

指针:

指针变量:例如:char *pa; 指向字符型指针变量

int 4个字节

取地址运算符(&)

*p=&a

取值运算符( * )

printf("%d", *p)

%p打印地址类型数据

数组名是数组第一个元素的地址,第二个元素的地址为第一个元素的地址+每个元素所占空间

指向数组的指针:

当指针指向数组元素的时候,可以对指针变量进行加减运算,相当于指向距离指针所在位置向前或向后的第n个元素。

p+1不是地址+1,而是指向数组的下一个元素。

先将取到的值放到length里面,节约循环中调用函数所调用的时间

指针跟数组的区别:

指针数组与数组指针:

指针数组:指针数组是一个数组,每个数组元素存放一个指针变量 int *p[5]
数组指针:数组指针是一个指针,指向的是一个数组 int (*p)[5]

void指针:通用指针

注意:编译器不提醒,不必要不用,打注释

NULL指针:

#define NULL ((void *)0)

不清楚将U指针初始化为什么时,可初始化为NULL。

指向指针的指针(指针的地址):

int num = 520;
int *p = #
int **pp = &p;
printf("num: %d\n", num);
printf("p: %d\n", *p);
printf("**p: %d\n", **p);

指针数组和指向指针的指针:

好处:

  1. 避免重复分配内存
  2. 只需要进行一处修改

提高代码的灵活性和安全性

数组指针和二维数组:

常量:

使用const关键字可以将变量改为常量

指向常量的指针:

  1. 指针可以修改为指向不同的常量
  2. 指针可ui修改为指向不同的变量
  3. 可以通过解引用来读取指针指向的数据
  4. 不可以通过解引用修改指针指向的数据

常量指针:

const 接近哪个限制哪个为不可修改

int num = 520;
const int cnum = 880;
int * const p = #//常量指针 指向的值可以被改变
const int * const p = #//没有const时,int为普通变量,可以被修改
  • 指向非常量的常量指针
    1. 指针自身不可以被修改
    2. 指针指向的值可以被修改
  • 指向常量的常量指针
    1. 指针自身不可以被修改
    2. 指针指向的值也不可以被修改

指向“指向常量的常量指针”的指针:

const int * const **p = &p;//没有const时,int为普通变量,可以被修改

指针自身不可以被修改
2. 指针指向的值可以被修改

  • 指向常量的常量指针
    1. 指针自身不可以被修改
    2. 指针指向的值也不可以被修改

指向“指向常量的常量指针”的指针:

const int * const **p = &p;//没有const时,int为普通变量,可以被修改
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值