void f(int *p){ *p = 5; } void main(){ int a,*p; a = 10; p = &a; f(p); printf("%d",(*p)++); } 相关知识点: 试题来源: 解析 代码的执行过程: (1)首先,在 main 函数中定义了一个整数变量 a 和一个整型指针变量 p。 (2)将整数变量 a 初始化为 10。 (...
void f(int *p);main(){ int a[5] = {1,2,3,4,5}, *r = a; f(r); printf(“%d\n”, *r);}void f(int *p){ p = p + 3; printf(“%d,”, *p); } A 4,1 B 4,4 C 1,4 D 1,1 相关知识点: 试题来源: 解析 A ...
void f(int(*p)[3]){}是个函数指针数组,指针数组属于二级指针
void f(int(*p)[3]){}是个函数指针数组,指针数组属于二级指针
void f(int *p) { *p = 5; } int main(void) { int a, *p; a = 10; p = &a; f(p); printf(“%d”, (*p)++); return 0; } A.5 B.6 C.10 D.11 答:A 解析:这里考察当是指针作为函数的参数。这里将 p 作为实参,传递给函数的形参 p,就表示 p 也指向变量 a 的地址。在函数中操...
A[解析] 在f(int *p,int *q)函数中,执行p=p+1将p所对应的地址加l,而*q=*q+1是将q所指向的n的地址所对应的值加1,即m的地址所对应的值不变,而n的值为3。 相关推荐 1有以下程序: #include <stdio.h> void f(int *p,int *q); main() int m=1,n=2,*r=&m; f(r,&n); printf...
若有void f(int *p,int n,int m){…},在主函数中有int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};f(*a,3,4);则在函数f中能访问a[i][j]的表达式是: A. *(*(p+i)+j) B. *(p+i*n+j) C. p[i][j] D. p[i*m+j] 相关知识点: 试题来源: 解析 D ...
int main(void){ int a, *p; a = 10; p = &a; f(p); printf("%d", (*p)++); return 0;}A.5 B.6 C.10 D.11答案是A因为这个是按地址调用,所以在子函数f()中已经改变了a的值,而打印时是先输出a的值,之后再对a进行增1操作你可以在return 0;前加上一句 printf("%d", *p); 就会发现...
void* p = &f;int i = *(int*)p; // 错误!按int解释浮点内存 四、标准库中的经典实现 1.内存管理函数 void* malloc(size_t size); // 分配未初始化内存 void* calloc(size_t num, size_t size); // 分配并清零内存 返回 void* 使调用者可自由转换为所需类型 。2. 内存操作函数 void...
在void (*pfunc)(int)语句里面,只有pfunc是变量名称,那么剩余的部分,void(*)(int),就是我们需要的转换类型。因此,新的赋值语句是: pfunc = (void (*)(int)) 0x8999940; 赋值完成后,就可以通过pfunc(5); 或 (*pfunc)(5);调用相应的函数了。