D17. 指针(2)

    xiaoxiao2022-07-05  180

    5. //int main() //{ // int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 9, 8 }; // int *p = &a[0][0]; // int i, j; // //for (i = 0; i < 3 * 4; ++i)//看二维数组不方便 // // printf("%d", *(p+i)); // for (i = 0; i < 3; ++i) // { // for (j = 0; j < 4; ++j) // { // printf("%d", *(p + i * 4 + j));//单指针指向二维数组 // } // printf("\n"); // } // system("pause"); // return 0; //} //6. //char a[] = { '1', '2', '3', '4', '5' }; //字符数组不一定要有结束符, 字符串一定要有结束符 //char b[5] = "12345"; 越界 //char b[5] = "1234"; 有\0, 没有越界 //strlen(b)比5大, 没意义 //char a[] = "123"; 把字符串"123"放在a开辟的4个空间里 //char *p = "123"; p指向字符串首元素地址, 也就是1的地址 //char *p; //p = "123"; 可以,数组不可以这样初始化 7.笔试题 int main() { char a[] = "123"; char b[] = "123"; const char c[] = "123"; const char d[] = "123"; char *p = "123"; char *q = "123"; const char *pp = "123"; const char *qq = "123"; if (a == b) printf("a==b\n"); if (c == d) printf("c==d\n"); if (p == q) printf("p==q\n"); if (pp ==qq) printf("qq==pp\n"); if (p == pp) printf("p==pp\n"); system("pause"); return 0; } #include<stdio.h> #include<stdlib.h> //1. //int main() //{ // int a[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 7, 6 };// 二维数组名a是 int(*p)[4] 类型 // int(*p)[4]; // int i, j; // p = a; // for (i = 0; i < 3; i++) // { // for (j = 0; j < 4; j++) // { // printf("%d", *(*(p + i) + j)); // } // printf("\n"); // } //注意指针变量的当前值 //for (p = a; p < a + 3; p++)//比二维数组名多一个操作可以自加,数组名不可以自加 //{ // for (j = 0; j < 4; j++) // { // printf("%d", *(*p + j)); // } // printf("\n"); //} // // system("pause"); // return 0; // //} //2. 数组传参数 //void output(int arr[][4]){} //void output(int(*p)[4]){} // //int main() //{ // int arr[3][4] = { 1, 4, 2, 3, 5, 6, 7, 8, 9, 0, 9, 8 }; // output(arr); // system("pause"); // return 0; //} //3.变指向来实现交换 //int main() //{ // char *tmp = NULL; // char *p = "111"; // char *q = "222"; // tmp = p; // p = q; // q = tmp; // printf("%s,%s\n", p, q);//%s // system("pause"); // return 0; //} //4. //void test(int a[100])// int * 类型 //{ // printf("%d\n", sizeof(a));//4 //} // //int main() //{ // int a[100]; // printf("%d\n", sizeof(a));//400 // test(a);//传首地址 // system("pause"); // return 0; //} // 二级指针 //int main() //{ // int a = 5; // int *p = &a; // int **q = &p; // printf("%d %d %d\n", a, *p, **q); // system("pause"); // return 0; //} //5. //int main() //{ // int a[5] = { 1, 2, 3, 4, 5 }; // int *q[5] = { &a[0], &a[1], &a[2], &a[3], &a[4] }; // for (int i = 0; i < 5; i++) // { // printf("-", **(q + i)); // } // system("pause"); // return 0; //} //6 指针类型不一样,加1就不一样 int main() { int a = 6; int *p = &a; printf("%p\n", p); printf("%p\n", p+1);//加4个字节 printf("%p\n", (unsigned long)p + 0x1);//加数字 1 printf("%p\n", (short *)p + 0x1);//加 2个字节 system("pause"); return 0; }

     

    最新回复(0)