C中指针变量的数组初始值设定项

C中指针变量的数组初始值设定项,c,C,函数不能返回数组,只能返回指向数组的指针。所以我试着这样做: int *arr = {-1, -1}; 这是有效的语法吗?我从编译器那里得到了警告。如果没有,有没有更好的方法来设置指向数组的指针变量而不进行循环 否。这不是有效的语法。可以是指向is的指针的有效语法 如果要返回数组,则返回指向该数组的指针 int *arr = malloc(sizeof(*arr)*2); .... return arr; 否。这不是有效的语法。可以是指向is的指针的有效语法 如果要返回数组,则返回指向该数组

函数不能返回数组,只能返回指向数组的指针。所以我试着这样做:

int *arr = {-1, -1};

这是有效的语法吗?我从编译器那里得到了警告。如果没有,有没有更好的方法来设置指向数组的指针变量而不进行循环

否。这不是有效的语法。可以是指向is的指针的有效语法

如果要返回数组,则返回指向该数组的指针

int *arr = malloc(sizeof(*arr)*2);
....
return arr;

否。这不是有效的语法。可以是指向is的指针的有效语法

如果要返回数组,则返回指向该数组的指针

int *arr = malloc(sizeof(*arr)*2);
....
return arr;
arr是指向整数的指针。所以不能有多个这样的init

您可以选择以下选项:

int *arr = NULL;

arr = malloc(..)

...
...
arr[0] = some value..
arr[1] = some value..
arr是指向整数的指针。所以不能有多个这样的init

您可以选择以下选项:

int *arr = NULL;

arr = malloc(..)

...
...
arr[0] = some value..
arr[1] = some value..
有没有更好的方法将指针变量设置为数组而不循环

有一个名为指向数组指针的选项。 样本:

有没有更好的方法将指针变量设置为数组而不循环

有一个名为指向数组指针的选项。 样本:


可以使用复合文字设置指向动态创建的数组的指针:


但是,阵列的寿命仅与它所在的块的寿命相同。不能从函数返回它。要按指针返回数组,您应该动态分配它,就像malloc一样。

您可以使用复合文字设置指向动态创建的数组的指针:

但是,阵列的寿命仅与它所在的块的寿命相同。不能从函数返回它。要通过指针返回数组,您应该动态分配它,就像malloc一样。

int *arr = {-1, -1};
这是有效的语法吗

没有,但这是:

和-在此形式指针中,arr可由函数返回:

int * somefunc(int *arr)
{
    //manipulate arr[0] - arr[n]
    ....
    return arr;
}
关于

int *arr = {-1, -1};
这是有效的语法吗

没有,但这是:

和-在此形式指针中,arr可由函数返回:

int * somefunc(int *arr)
{
    //manipulate arr[0] - arr[n]
    ....
    return arr;
}

在这种情况下,有没有一种不循环初始化数组的快捷方式?c99中的有效声明可以是int*arr=int*{-1,-1}@GeorgeNewton可以使用memcpyarr,int[]{-1,-1},sizeofint*2;但如果要从函数返回,仍然必须使用malloc来分配内存。@haccks不,我们不能让它只在函数中有生命。Doing int*arr=malloc2*sizeof*arr;在这种情况下,有没有一种不循环初始化数组的快捷方式?c99中的有效声明可以是int*arr=int*{-1,-1}@GeorgeNewton可以使用memcpyarr,int[]{-1,-1},sizeofint*2;但如果要从函数返回,仍然必须使用malloc来分配内存。@haccks不,我们不能让它只在函数中有生命。Doing int*arr=malloc2*sizeof*arr;会是节省的。为什么我不能返回它/@GeorgeNewton do:int*f{int*p=mallocsizeofint*2;memcopyp,int[]{2,4};,sizeofint*2;return p;}@GeorgeNewton:每个C对象都有一个生存期。自动对象的生存期不会超出创建它们的函数的执行时间,并且可能会在块完成执行时提前结束。由于函数返回后对象在C模型中不存在,因此返回指向该对象的指针是不合适的;指针将指向不应该访问的空间。所以每次我在函数的数组中创建时,即使我为它设置了指针变量,它也会消失?如果你经历了学习它的痛苦阶段,C语言很可能是你能找到的最便携、最通用、最通用的语言。它在编程领域的应用比我所知道的任何其他单一语言都多:应用程序、库、用户模式和内核模式、嵌入式,。。。以及更多的操作系统。Windows、linux、Mac,。。。那么,继续使用它。为什么我不能返回它/@GeorgeNewton do:int*f{int*p=mallocsizeofint*2;memcopyp,int[]{2,4};,sizeofint*2;返回p;}@GeorgeNewton:每个C对象都有一个生命周期。自动对象的生存期不会超出创建它们的函数的执行时间,并且可能会在块完成执行时提前结束。由于函数返回后对象在C模型中不存在,因此返回指向该对象的指针是不合适的;指针将指向不应该访问的空间。所以每次我在函数的数组中创建时,即使我为它设置了指针变量,它也会消失?如果你经历了学习它的痛苦阶段,C语言很可能是你能找到的最便携、最通用、最通用的语言。它在编程领域的应用比我所知道的任何其他单一语言都多:应用程序、库、用户模式和内核模式、嵌入式,。。。以及更多的操作系统。Windows、linux、Mac,。。。在C99中,执行以下操作:void*f{int size=sizeofint*2;返回memcopymallocsize,int[]{2,4};,size;}检查您是否真的应该
劳埃德仔细阅读了他们之间的差异。但基本上,设置指向数组的指针就像int*ptr=&arr[0]一样简单;甚至int*ptr=arr;。在C99中,do:void*f{int size=sizeofint*2;返回memcopymallocsize,int[]{2,4};,size;}检查您是否真的应该仔细阅读它们之间的差异。但基本上,设置指向数组的指针就像int*ptr=&arr[0]一样简单;甚至int*ptr=arr;。