【C语言】复习~数组和指针
数组和指针
1.字符指针
char*
使用方法一:
使用方法二:
这里本质上是把常量字符串的首地址放到了指针变量pstr里面
看下面的面试题
str3和str4指向的是同一个常量字符串,c/c++会把常量字符串存储到一个单独的内存区域,当几个指针,指向同一个字符串的时候,他们实际上会指向同一块内存,但是用相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块,所以str1和str2相同,str3和str4不同
2.指针数组
指针数组:存放指针的数组
3.数组指针
p1是指针数组
p2是数组指针
因为[]括号的优先级大于*号,所以p1是数组 而不是指针
&数组名VS数组名
在这里他俩打印的地址是一样的,但本质还是不一样的,再看下面
实际上,&arr表示的是数组的地址,而不是数组首元素的地址本例中 &arr 的类型是: int(*)[10] ,是一种数组指针类型
数组的地址+1,跳过整个数组的大小,所以 &arr+1 相对于 &arr 的差值是40
数组指针的使用
这里的int (*arr)[5]等价于 int[3][5]
4.函数指针
5.相关笔试题
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()
![]()