初学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[])