|
10鱼币
为什么按第二种写法会造成越界访问,第一种就不会?
题2原题看图
代码:
第一种:
- #include <stdio.h>
- #include <string.h>
- int main()
- {
- char *array[5] = {"FishC", "Five", "Star", "Good", "Wow"};
- char *(*p)[5] = &array;
- int i, j;
- for (i = 0; i < 5; i++)
- {
- for (j = 0; j < 5; j++)
- {
- if (i > strlen((*p)[j]) - 1)
- {
- break;
- }
- printf("%c ", (*p)[j][i]);
- }
- printf("\n");
- }
- return 0;
- }
复制代码
第二种:
- #include <stdio.h>
- int main()
- {
- char *array[5] = {"FishC", "Five", "Star", "Good", "Wow"};
- char *(*p)[5] = &array;
- int i, j;
- for (i = 0; i < 5; i++)
- {
- for (j = 0; j < 5; j++)
- {
- if ((*p)[j][i] == '\0')
- {
- break;
- }
- printf("%c ", (*p)[j][i]);
- }
- printf("\n");
- }
- return 0;
- }
复制代码
(*p)[4] 选定 "Wow" 这个字符串
(*p)[4][0] 选定 'W'
(*p)[4][1] 选定 'o'
(*p)[4][2] 选定 'w'
(*p)[4][3] 选定 '\0'
(*p)[4][4] 选定 ?????
|
最佳答案
查看完整内容
(*p)[4] 选定 "Wow" 这个字符串
(*p)[4][0] 选定 'W'
(*p)[4][1] 选定 'o'
(*p)[4][2] 选定 'w'
(*p)[4][3] 选定 '\0'
(*p)[4][4] 选定 ?????
|