文章目录
前言
指针学习笔记
指针类型
指针类型决定了指针加、减整数跳过的字节数,以及依次可以操作几个字节
字符指针
即
char*类型
一般有以下两种使用方法
//第一种
int main()
{
char ch = 'w';
char *pc = &ch; *pc = 'w';
return 0;
}
//第二种
int main()
{
char* pstr = "hello world.";
printf("%s\n", pstr);
return 0;
}
在第二种用法,我们用字符指针指向了字符串常量的首元素地址,,字符串子内存连续存储,因而可以找到整个字符串。
指针数组
指针数组就是数组元素全是指针的数组
int* arr1[10]; //整形指针的数组
char *arr2[4]; //一级字符指针的数组
char **arr3[5];//二级字符指针的数组
因为[]的优先级比*高,arr先和[]结合就成了数组
数组指针
指向数组的指针叫数组指针
int (*p)[10];
//解释:p先和*结合,说明p是一个指针变量,然后指着指向的是一个大小为10个整型的数组。所以p是一个指针,指向一个数组,叫数组指针。
//这里要注意:[]的优先级要高于*号的,所以必须加上()来保证p先和*结合。
数组指针的应用
数组指针主要用于二维数组传参
#include <stdio.h>
//以下两个函数体现了两种二维数组传参的方式
void print_arr1(int arr[3][5], int row, int col)
{
int i = 0;
for(i=0; i<row; i++)
{
for(j=0; j<col; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
}
void print_arr2(int (*arr)[5], int row, int col)
{
int i = 0;
for(i=0; i<row; i++)
{
for(j=0