本篇博客将讲解以下知识:
1、字符指针变量
2、数组指针变量
1、字符指针变量
在指针的类型中,有一种指针类型为字符指针:char*
一般使用:
注意:%s打印字符串的时候,需要提供字符串首元素的起始地址。
易错题:
这里str3和str4指向的是同一个常量字符串 。c/c++会把常量字符串存储到单独的一个内存区域。当几个指针变量指向同一个常量字符串的时候,它们实际上会只想同一块内存。但是用相同的常量字符串去初始化不同的数组的时候会开辟出不同的内存块,所以str1和str2不同,str3和str4相同。
2、数组指针变量
(1)数组指针变量是什么?
之前我们学习了指针数组,指针数组是一种数组,数组中存放的是地址。
数组指针变量是指针变量?还是数组?
是指针变量
指针数组:是数组,是存放指针的数组。
字符指针:char* ,指向字符的指针。
整型指针:int*,指向整型的指针。
类比思维:
数组指针:指向数组的指针。
比如:
#include<stdio.h>
int main()
{
int a = 10;
int* pa = &a;//pa是整型指针
char ch = 'w';
char* pc = &ch;//pc是字符指针
return 0;
}
整型指针变量:int* print;存放的是整型变量的地址,能够指向整型类型的指针。
数组指针变量:存放的应该是数组的地址,能够指向数组的指针变量。
int* p1[10];//p1是指针数组--存放指针的数组。
int(*p2)[10];//p2是数组指针。
数组指针
**例如:**int(*p)[10];
解释:p先和*结合,说明p是一个指针变量,然后指针变量指向的是一个元素个数为10的整型数组,所以p是一个指针,指向一个数组,叫数组指针。
这里要注意:[ ]的优先级要高于*的。所以必须加上()来保证p先和*结合。
(2)数组指针变量如何初始化
数组指针变量是用来存放数组地址的,如何获得数组地址呢?
例如:
#include<stdio.h>
int main()
{
int arr[10] = { 0 };
//&arr得到的就是数组的地址
//如果存放数组的地址,就得存放在数组指针变量中。
int (*p)[10] = &arr;//p的类型是int (*)[10],数组指针类型。
return 0;
}
数组指针类型解析:
数组指针的可以应用到二维数组传参中去。