1.请问str[3]和*(str+3)是否完全等价?
答:完全等价
2.请问下面代码是否可以正常执行?
#include <stdio.h>
int main(void){
int a[5]={1,2,3,4,5};
int *b;
b=&a[3];
printf("%d\n",b[-2]); //b[-2]等价于*b-2
return 0;
}
答:可以正常执行
3.为什么不可以用if(str1==str2)这样的形式来比较两个字符串?
不会, 答案:因为这样比较的是两个字符串的指针,而不是字符串本身
4.仔细阅读下列代码!
#include <stdio.h>
int main(void){
int array[10]={0,1,2,3,4,5,6,7,8,9};
int *p=(int *)(&array+1); //因为&array是指向整个数组的首地址的
//跨度为sizeof(array)/sizeof(array[0]),也就是跨度为一个数组
//然后将他强制转换为int类型的指针
printf("%d\n",*(p-6)); //因为p指针是一个int类型的,所以-6等于指针移6个int单位
return 0;
}
5。仔细阅读下列代码
#