如何使用双指针在C中操纵数组?

索特

我正在运行一个简单的程序,以使用双指针打印数组的第一个元素值:

#include <stdio.h>

int main()
{
    int arr[3] = {1,2,3};
    int **ptr;
    *ptr = arr;
    printf("%d\n", **ptr);
    return 0;
}

但是然后我得到了一个细分错误。我究竟做错了什么?

来自莫斯科的弗拉德

指针ptr未初始化,并且具有不确定的值。

int **ptr;

因此,取消引用它会导致未定义的行为。

*ptr = arr;

您需要一个中间指针。例如

int *p;
int **ptr = &p;

*ptr = arr;

或者您可以像这样动态分配中间指针

int **ptr = malloc( sizeof( int * ) );
*ptr = arr;

//...
free( ptr );

这是两个演示程序。

#include <stdio.h>

int main( void )
{
    int arr[3] = {1,2,3};
    int *p;

    int **ptr = &p;

    *ptr = arr;

    printf("%d\n", **ptr);

    return 0;
}

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    int arr[3] = {1,2,3};

    int **ptr = malloc( sizeof( int * ) );

    *ptr = arr;

    printf("%d\n", **ptr);

    free( ptr );

    return 0;
}

这两个程序都有输出

1

如果需要指向整个数组的指针,则其声明可以看起来像下面的演示程序中所示。

#include <stdio.h>

int main( void )
{
    enum { N = 3 };
    int arr[N] = { 1, 2, 3 };

    int ( *ptr )[N] = &arr;

    for ( size_t i = 0; i < N; i++ )
    {
        printf( "%d ", ( *ptr )[i] );
    }

    putchar( '\n' );

    return 0;
}

程序输出为

1 2 3 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C ++中的双指针数组

来自分类Dev

在C中操纵char数组-空指针?

来自分类Dev

如何使用双指针作为指针数组?

来自分类Dev

在 C 中连接双指针字符数组

来自分类Dev

在C ++中使用“双指针”动态数组

来自分类Dev

如何在C中操纵char数组

来自分类Dev

如何使用熊猫操纵数组中的数据

来自分类Dev

从C ++到C#包装-如何处理C#中的双指针数组

来自分类Dev

使用C中的双指针将二维数组放入现有内存中

来自分类Dev

如何使用双指针正确引用结构中的指针

来自分类Dev

从C中的双指针数组中删除一行?

来自分类Dev

使用指针操纵函数外部的数组?

来自分类Dev

在Swift 5中访问C双指针数组(**条目)

来自分类Dev

c - 如何对c中的双指针进行字母排序?

来自分类Dev

在C中释放双指针

来自分类Dev

如何使用指针/数组在C中实现这些方法?

来自分类Dev

如何在C中嵌套无结构的双指针?

来自分类Dev

转换双指针以及如何在C中使用

来自分类Dev

转换双指针以及如何在C中使用

来自分类Dev

当人们想操纵函数中的指针时,为什么要传入双指针呢?

来自分类Dev

在C编程中使用结构的双指针将文本文件中的Matrix读取为2D数组

来自分类Dev

C语言中的指针的解释(也可以操纵数组)

来自分类Dev

如何在c中填充指针数组

来自分类Dev

如何在C ++中删除指针数组?

来自分类Dev

使用C中的指针打印Char数组

来自分类Dev

如何检查指针数组中是否设置了C ++对象指针

来自分类Dev

如何理解链表中的双指针

来自分类Dev

如何在C中创建(和使用)指向字符串数组的指针数组?

来自分类Dev

如何跟踪双指针使用错误

Related 相关文章

热门标签

归档