//指针标准:允许指向数组元素的指针域指向数组最后一个元素后面的那个内存的指针比较,但是不允许与指向第一个 //元素之前的那个内存位置的指针进行比较 //int main() //{ // int arr[10] = { 0 }; // printf("%p\n", arr);//%p为打印字符串,数组名 // printf("%p\n", &arr[0]);// % p为打印字符串, 数组名是首元素地址,打印结果相等 // return 0; //} //p是首元素地址,p+i是下标为i的地址 //int main() //{ // int arr[10] = { 0 }; // int* p = arr; // int i = 0; // //for (i = 0; i <= 10; i++) // //{ // // printf("%p=<====>%p\n", arr[i], p + i);//地址相同 // // //p+0表示第一个元素,p+1表示跳过第一个元素的整形 // // //p+i表示下标为i的地址 // //} // for (i = 0; i < 10; i++) // { // *(p + i) = i; // printf("%d ", *(p + i)); // //若把i变为2,可写为arr[2]==*(arr+2)==*(2+arr)==2[arr]==arr[2]==*(p+2)==*(2+p)==p[2] // //p+i:下标为i的的地址 *(p+i):解引用变为下标为i的元素 *(p+i)=i表示把i的值放在下标为i的元素中 // } // return 0; //} //int main() 二级指针变量ppa //{ // int a = 10; // int* pa = &a;//将a的地址取出来(&a)放在pa中,*pa表示解地址符 // int** ppa = &pa;//将pa的地址取出来(&pa),放在ppa中,**pa表示解地址符,最终*ppa存放a的值 // //&pa,意思是取出pa的地址 // //*ppa的第一颗星说明ppa是指针,,,第二颗星说明**ppa的类型是int*pa // int*** pppa = &ppa; // return 0; //} //int*a[5]指针数组--存放指针的数组 //char ar[5];字符数组--存放字符的数组 //int arr[5];整型数组--存放整形的数组