小编ila*_*ila的帖子

C 通过指针访问二维字符数组

我正在尝试访问一个二维字符数组。我有一个指向正确地址的指针,但以某种方式引用不起作用。

    char ary[5][8];
char temp[8];
int i;

char **a_ptr = &ary;

    for(i=0; i<5; i++){
        sprintf(temp, "0x10%d" , i);
        strcpy(ary[i] , temp);
        printf("~~~%s@0x%x == 0x%x" , ary[i] , &ary[i] , (a_ptr + i));

    }

    for(i=0; i<5; i++){//This wont work. 
        printf("~~~%s@0x%x" , *(a_ptr + i) ,  (a_ptr + i));

    }
Run Code Online (Sandbox Code Playgroud)

以下是此功能在中断以取消对指针的引用之前的输出。

输出格式:值@地址

0x100@0x5fbff408 == 0x5fbff408
0x101@0x5fbff410 == 0x5fbff410
0x102@0x5fbff418 == 0x5fbff418
0x103@0x5fbff420 == 0x5fbff420
0x104@0x5fbff428 == 0x5fbff428
Run Code Online (Sandbox Code Playgroud)

正如我们在上面的输出中看到的,数组值被正确填充并且 a_ptr 指向正确的地址 (&ary[i] == (a_ptr + i))。

但是当指针是尊重时,它就会在那里中断。即使使用 [] 操作符也是如此。

*(a_ptr + i); //Breaks …
Run Code Online (Sandbox Code Playgroud)

c pointers multidimensional-array

0
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×1

multidimensional-array ×1

pointers ×1