当我试图为函数内的任何类型的结构分配内存时,会出现以下错误
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 );