C - 为什么 *& token 在尝试在函数内分配内存时返回错误



当我试图为函数内的任何类型的结构分配内存时,会出现以下错误

expected ';', ',' or ')' before '&' token|

下面是一个得到错误的小代码示例

#include <stdio.h>
#include <malloc.h>
int carga( int *&x){
x= (int*) malloc ( sizeof (int) *10);
for(int i=0; i<10;i++)
scanf("%d ",&x[i]);
}
int main()
{
int *b;
carga(b);
free(b);
}

此外,我想解释一下*&如果可能的话,做代币。

在函数声明中

int carga( int *&x){

令牌CCD_ 1不是类型说明符。它们形成了一个表达式,您不能在声明中使用它。

注意这句话

free(b);

将调用未定义的行为,因为指针b不是由动态分配的内存的地址初始化的。

你的意思好像是下面的

#include <stdio.h>
#include <malloc.h>
void carga( int **x )
{
*x = (int*) malloc( sizeof (int) * 10 );

if ( *x != NULL )
{
for ( int i = 0; i < 10; i++ )
scanf("%d", *x + i );
}
}
int main( void )
{
int *b;
carga( &b );
free( b );
}

与C++中的C相反,您可以编写类似的函数声明

void carga( int *&x );

在C++中,函数可以通过以下方式定义

void carga( int * &x )
{
x = new int[10];

for ( int i = 0; i < 10; i++ )
std::cin >> x[i];
}

像一样被称为

int *b;
carga( b );

最新更新