| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
#include <stdio.h> 
 
 
int main() 
{ 
    char* array[5] = { "FishCFishC", "Five", "Star", "Good", "WoW" }; 
    char* (*p)[5] = &array; 
    int i, j; 
    for (i = 0; i < 5; i++) 
    { 
        printf("%s\n", *(*p + i)); 
    } 
    printf("\n\n\n"); 
 
 
    char b[10][10] = { "FishCFishC", "Five", "Star", "Good", "WoW" }; 
    char* (*p2)[10] = &b; 
 
    for (i = 0; i < 5; i++) 
    { 
        int temp; 
 
        for (j=0; *(*(*p2 + i)+j)!='\0';j++) 
        { 
            temp = *(*(*p2 + i) + j); 
            *(*(*p2 + i) + j) = *(*(*p2 + j) + i); 
            *(*(*p2 + j) + i) = temp; 
 
        } 
 
 
 
    } 
 
    for (i = 0; i < 5; i++) 
    { 
        printf("%s\n", *(*p2 + i)); 
    } 
 
 
    return 0; 
} 
 
 
 
 
 
先是打印指针数组中的字符串,单独运行第一段没有问题。第二段创建10*10二维数组保证转置后数组不越界,但是事与愿违,程序无法运行,报错(0x00BD521A 处(位于 ConsoleApplication87.c.exe 中)引发的异常: 0xC0000005: 读取位置 0x68736946 时发生访问冲突。),求大神DEBUG,小白知道可以直接打印[j][i]来实现转置,但想尝试把原始数据更改。求助 
 本帖最后由 Cool_Breeze 于 2020-9-17 12:52 编辑 
- #include <stdio.h>
 
  
 
- int main()
 
 - {
 
 -     char* array[5] = { "FishCFishC", "Five", "Star", "Good", "WoW" };
 
 -     char** p = array;
 
 -     int i, j;
 
 -     for (i = 0; i < 5; i++)
 
 -     {
 
 -         printf("%s\n",*(p + i));
 
 -     }
 
 -     printf("\n\n\n");
 
  
-         p = array;
 
 -     char b[10][10] = { 0 };
 
 -     char (*p2)[10] = b;
 
  
-     for (i = 0; i < 5; i++)
 
 -     {
 
 -         for (j=0; *(*(p+i)+j)!='\0';j++)
 
 -         {
 
 -                 printf("%c ",*(*(p+i)+j));
 
 -                 *(*(p2+j)+i) = *(*(p+i)+j);
 
 -         }
 
 -                 putchar('\n');
 
 -     }
 
 -         printf("\n\n\n");
 
 -     for (i = 0; i < 10; i++)
 
 -     {
 
 -             for (j=0; j<10; j++)
 
 -                 printf("%c ", *(*(p2 + i)+j));
 
 -             putchar('\n');
 
 -     }
 
  
-     return 0;
 
 - }
 
  复制代码 
 
 
 |   
 
 
 
 |