[力扣]5382. HTML 实体解析器

HTML解析

Posted by JinFei on April 12, 2020

指针与数组

int (s[10])(int) 表示的是什么? 1、首先s[10] 是一个指针数组,s 是一个含有10个指针的数组,故可以这样来看这条声明语句:假设 p 等价于 s[10],声明语句变为 int (p)(int); 2、观察 int (p)(int), 从名字开始,p前面有一个 * ,因此 p 是指针,有侧是形参列表,表示p指向的是函数,在观察左侧,函数返回的是 int; 3、则 int (p)(int) 解读为:函数指针,指向一个 int func(int param) 的函数; 4、故 int (s[10])(int) :解读为:函数指针数组,每个指针指向一个 int func(int param)的函数。

```C++ int a[5]={1,2,3,4,5}; int ptr=(int *)(&a+1); // (&a + 1) -> 解释为全部数组的长度 ptr = a[5] // 并不存在 ,减1之后,指向了5 cout«(a+1)«*(ptr-1); // 答案是25

char (*str)[20]; //str是一个数组指针,即指向数组的指针. char *str[20]; //str是一个指针数组,其元素为指针型数据.

(unsigned int*)0x100000 = 1234 // 对绝对地址0x100000赋值

((void ()( ))0x100000 ) ( ) // 程序跳转到绝对地址是0x100000去执行 首先要将0x100000强制转换成函数指针,即: (void ()())0x100000 再调用它: *((void ()())0x100000)()



## str[] 和    *str
```C++
char str1[] = “abc”;
char str2[] = “abc”;
const char str3[] = “abc”;
const char str4[] = “abc”;
const char *str5 = “abc”;
const char *str6 = “abc”;
char *str7 = “abc”;
char *str8 = “abc”;
cout << ( str1 == str2 ) << endl;   // 0
cout << ( str3 == str4 ) << endl;   // 0    
cout << ( str5 == str6 ) << endl;   // 1
cout << ( str7 == str8 ) << endl;   // 1