(1)sizeof 和 strlen 的对比

1——sizeof

                                     指针5_一维数组

sizeof最好用 %zd
sizeof是操作符不是函数

                                     指针5_补码_02

sizeof与一维数组(****)

                                     指针5_补码_03

                                     指针5_一维数组_04

sizeof(*arr) == sizeof(arr[0])



字符指针与sizeof

                                     指针5_一维数组_05

p里面储存的是字符串中首字符的地址

                                     指针5_字符指针_06

二维数组与sizeof(重要)

                                     指针5_字符指针_07

                                     指针5_补码_08

sizeof 并不会真实计算它只会根据类型来推测



2——strlen

strlen最好用%zd
要包含头文件

                                     指针5_字符指针_09

                                     指针5_字符指针_10

****注意
strlen要找到/0才停止所以arr1它会一直找下去直到遇到/0






strlen与一维数组的关系

strlen函数

                                     指针5_字符指针_11

                                     指针5_字符指针_12

strlen(arr)与strlen(&arr)与strlen(arr + 0)一样
strlen接收的是地址
strlen(数组名)就代表是首元素的地址




字符指针与strlen

                                     指针5_补码_13


                                     指针5_一维数组_14


(2)指针运算笔试练习题

1

                                     指针5_字符指针_15

2

                                     指针5_补码_16

struct Test
{
  int name;
  char * pcName;
}* p 
意思是结构体指针类型化
*与结构体一起的
0x100000是整型需要强制类型转换


指针+1 和类型有关
整型+1就是+1


3

                                     指针5_字符指针_17

(0,1)——逗号表达式——整个表达式的结果是最后一个数


4

 (数组指针补充)
int arr[5][5];
int (*pa)[4] = a;
将 int(*p)[5]类型的a赋给int(*p)[4]的pa
所以pa+1就跳过4个元素

    

                                     指针5_补码_18

题目p

                                     指针5_一维数组_19

                                     指针5_补码_20

结果

                                     指针5_字符指针_21


地址与地址相减结果就是他们之间元素的个数的绝对值
解析:&p[4][2]-&a[4][2] = -4
-4在编译器中以补码的形式存在
%p没有负数的概念所以%p打印时就是把内存中的补码直接打印出来
用%u打印时不用再将补码转换为原码而是直接打印
用%d打印需要求原码

5

                                     指针5_一维数组_22

答案:10,5

6

                                     指针5_一维数组_23

char* arr[] = {"work","lihua","anli"};
arr[][]里面存的是w,l,a的地址
类似:char* a = "work";

                                     指针5_补码_24

答案:at


7(难)

                                     指针5_补码_25

                                     指针5_字符指针_26

                                     指针5_一维数组_27