一血初学者,有三个选择题,请大侠们给作一个
一血菜鸟,有三个选择题,请大侠们给作一个。
一个函数声名为void foo(char **p,int len)该函数的功能是分配大小为len的内存
空间给指针p,那么这个函数中内存分配语句应该是
void foo(char **p,int len)
{
______________
}为什么?
1,p=malloc(len)
2,p=(char *) malloc(len)
3,**p=(char *)malloc(len)
4,*p=(char *)malloc(len)
如果程序中需要分配大小为100byte的内存空间给char *ptr,那么调用上面的函数
应该是();为什么?
1,foo(ptr,100);
2, foo(&ptr,100);
3,foo(*ptr,100);
4,foo(**ptr,100);
若有以下程序,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是()为什么;
int t[3][3],*pt[3],k;
for(k=0;k <3;k++)pt[k]=&t[k][0];
A,t[2][0] B,t[2][2] C,t[1][2] D,t[2][1]
------解决方案--------------------
1 4 //分配的内存要由一个指针来指向,所以从34中选,其中3是指向指针的指针
2 2 //函数原型中形参为指针的指针,只要将指针变量再取地址,即可作为实参
3 c //pt+1,指针移动一行, *(pt+1)+2中的加2指针移动2列
一个函数声名为void foo(char **p,int len)该函数的功能是分配大小为len的内存
空间给指针p,那么这个函数中内存分配语句应该是
void foo(char **p,int len)
{
______________
}为什么?
1,p=malloc(len)
2,p=(char *) malloc(len)
3,**p=(char *)malloc(len)
4,*p=(char *)malloc(len)
如果程序中需要分配大小为100byte的内存空间给char *ptr,那么调用上面的函数
应该是();为什么?
1,foo(ptr,100);
2, foo(&ptr,100);
3,foo(*ptr,100);
4,foo(**ptr,100);
若有以下程序,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是()为什么;
int t[3][3],*pt[3],k;
for(k=0;k <3;k++)pt[k]=&t[k][0];
A,t[2][0] B,t[2][2] C,t[1][2] D,t[2][1]
------解决方案--------------------
1 4 //分配的内存要由一个指针来指向,所以从34中选,其中3是指向指针的指针
2 2 //函数原型中形参为指针的指针,只要将指针变量再取地址,即可作为实参
3 c //pt+1,指针移动一行, *(pt+1)+2中的加2指针移动2列