|
1鱼币
大佬们,两个问题
第一个问题:
数组指针里存放的应该是数组的地址,但是指向二维数组时数组名不需要加&符号,这是为什么?
- #include <stdio.h>
- int main()
- {
- int array[2][3] = {{0, 1, 2}, {3, 4, 5}};
- [color=Red][b]int (*p)[3] = array;[/b][/color]
- printf("**(p+1): %d\n", **(p+1));
- printf("**(array+1): %d\n", **(array+1));
- printf("array[1][0]: %d\n", array[1][0]);
- printf("*(*(p+1)+2): %d\n", *(*(p+1)+2));
- printf("*(*(array+1)+2): %d\n", *(*(array+1)+2));
- printf("array[1][2]: %d\n", array[1][2]);
- return 0;
- }
复制代码
第二个问题:
第23课作业做一做第一题代码:
- #include <stdio.h>
- int main()
- {
- char *array[5] = {"FishC", "Five", "Star", "Good", "WoW"};
- [color=Red]char *(*p)[5] = &array;[/color]
- int i, j;
- for (i = 0; i < 5; i++)
- {
- for (j = 0; (*p)[i][j] != '\0'; j++)
- {
- printf("%c ", (*p)[i][j]);
- }
- printf("\n");
- }
- return 0;
- }
复制代码
红色部分为什么要多加一个‘ * ’,按照我自己的理解,指针数组指向的应该是整个数组,存放的是整个数组的地址,那么应该是(*p)[5]=&array;但是我试了一下会报错,
有大佬来帮忙解释一下这句语句的意思吗?
- #include<stdio.h>
- int main()
- {
- int c=1;
- int d=2;
- int* a=&c;
- int* b=&d;
- int **str[2]={&a,&b};
- int **(*p)[2]=&str;
- printf("%d",****p);
- return 0;
- }
复制代码
- #include<stdio.h>
- int main()
- {
- int c=1;
- int d=2;
- int* a=&c;
- int* b=&d;
- int *str[2]={a,b};
- int *(*p)[2]=&str;
- printf("%d",***p);
- return 0;
- }
复制代码
|
|