读书人

初学C关于指针数组参数,该怎么处理

发布时间: 2013-11-18 00:11:49 作者: rapoo

初学C关于指针数组参数

void a_init(int *len,int **a) {
*a=(int*)malloc(2*sizeof(int));
*a[0]=1;
*a[1]=2;
*len=2;
}

int main(int arg)
{

int *a;
int len;
a_init(&len,&a);
for(int i=0;i<len;i++){
printf("%d-->%s\n",len,a[i]);
}
free(a);
return 0;
}

我想让a_init执行后 main方法可打印出a里的值1,2,这段代码有什么问题么?
[解决办法]
printf("%d-->%s\n",len,a[i]);
int 型数据 你干嘛要用%s呢?
[解决办法]
貌似运算符优先级有误(*a)[0]=...
[解决办法]
参考一下:
#include <cstdlib>
#include <cstdio>

void a_init(int *len,int **a) {
*a=(int*)std::malloc(2*sizeof(int));
(*a)[0]=1;
(*a)[1]=2;
*len=2;
}

int main(int arg)
{

int *a;
int len;
a_init(&len,&a);
for(int i=0;i<len;i++){
printf("%d-->%d\n",len,a[i]);
}
free(a);

return 0;
}


函数a_init()中:
*a[0]=1;
*a[1]=2;

修改为:
(*a)[0]=1;
(*a)[1]=2;


函数main()中:
printf("%d-->%s\n",len,a[i]);
修改为:
printf("%d-->%d\n",len,a[i]);


增加头文件包含:
#include <cstdlib>
#include <cstdio>


函数
int main(int arg)
最好修改为:
int main(int argc, char *argv[])

读书人网 >C语言

热点推荐