问题 | |
指针 | |
1 | 指针的概念? |
2 | 指针的特殊性体现在哪些方面? |
3 | 有人说:“指针就是地址!”对吗? |
4 | 指针的定义方法? |
5 | 与指针相关的7种运算,试总结一下 |
6 | char *p1 = (char *)0x00; //p + 1 = ? Int *p2 = (int *)0x00; //p + 1 =? |
7 | 试分析如下代码中的问题?讨论解决方法 void getspace(int *pi) { pi = (int*)malloc(10*sizeof(int)); } void main() { int i = 0; int *p = NULL; getspace (p); for(i = 0; i<10; i++) p[i] = i; } |
8 | 对比如下两组代码 #include<stdio.h> void fun(int *p) { int b=100; p=&b; } void main() { int a=10; int *q; q=&a; printf("%d\n",*q); fun(q); printf("%d\n",*q); return; } #include<stdio.h> void fun(int *p) { *p=100; } void m |
9 | const做函数参数的使用 void fun1( const int *p ) { } void fun2( int * const p) { } int main() { const int val1 = 5; int val2; fun1(&val1); fun1(&val2); fun2(&val1); fun2(&val2); return 0; } |
10 | 说出以下定义语句的含义以及偏移“1”走的距离: 1:int a[4][5]; //a+1? 2:int (*p1)[5];//p1+1? 3:int **p2;//p2+1? 4:int *p3[5];//p3+1? |
11 | 对比如下数组和指针关系 #define ARR_NUM 100 int Arr[ARR_NUM]; int *p; |
12 | 对比如下数组和指针关系 #define ARR_NUM1 100 #define ARR_NUM2 100 int Arr[ARR_NUM1][ARR_NUM2]; int (*p)[ARR_NUM2]; |
13 | 对比如下数组和指针关系 #define ARR_NUM 100 int *Arr[ARR_NUM]; int **p; |
14 | 函数中的指针出现的位置分哪些情况? |
15 | 函数指针的定义方法? |
16 | 函数指针的使用过程? |
17 | 函数指针的应用 #define ADD 0 #define SUB 1 #define MUL 2 #define DIV 3 double add(double val1, double val2); double sub(double val1, double val2); double mul(double val1, double val2); double div(double val1, double val2); double (*oper_func[])(double, double) = |
18 | 各种各样的指针 1:int *ptr; 2:char *ptr; 3:int **ptr; |
19 | 4:int *ptr[3]; 5:int (*ptr)[3]; 6:int* ptr[3][4]; 7:int*(*ptr)[4]; 8:int (*p)[3][4]; 9:int (*p[3])[4]; |
20 | 10:int (*pfun)(int ,int); 11:void* (*ptr)(void*); 12:int* pMove(); 13:int (*p[3])(int); |
21 | #include <cstdio> #define ARR_NUM1 2 #define ARR_NUM2 3 void fun1( int (*p)[ARR_NUM2], int cnt); void fun2( int **p, int cnt); void main() { int Arr[ARR_NUM1][ARR_NUM2]={{0,1,2},{3,4,5}}; fun1(Arr, ARR_NUM1); fun2((int **)Arr, ARR_NUM1); |
22 | 指出如下代码的错误 void fun(int *p) { *p = 10; } int main() { int *p; fun(p); } |
23 | int main( ) { char *p; p = (char *)malloc(sizeof(char)*10); p[10] = ‘a’; } |
24 | void gimme() { char *p; p = (char *)malloc(10); return; } int main() { gimme(); return 0; } |
25 | 指出下列代码中的问题 typedef struct ptrblock { char *ptr; }PB; int main( ) { PB *p; p = (PB *)malloc( sizeof(PB) ); p->ptr =(char *) malloc (10); ... free(p); free(p->ptr ); } |
26 | 指针有什么好处? |
27 | //锯齿数组 #include<stdio.h> #include<stdlib.h> #include<string.h> #include<memory.h> void main() { char row = 5, crow; int index; char **p = NULL; p = (char **)malloc(sizeof(char *) * row); if (NULL == p )return ;/// crow = row; |
28 | //二级指针传参数 #include <cstdio> int GetArr( int **pArr, int *Num); void main() { int *pArr; int cnt; int Num; GetArr(&pArr, &Num); for( cnt = 0; cnt < Num; ++cnt ) { printf("%d\t", pArr[cnt]); } } int GetArr( int **pArr, i |
29 | 练习题目:实现一个完整的单向链表,要求数据和算法分离(既每个功能通过设计独立函数实现),完成插入节点,删除节点,清空链表,遍历链表(用二级指针实现)。 |
30 | 用C语言编写代码,向0x00440000写入整型数128 |
C语言指针相关知识点
最新推荐文章于 2024-03-07 22:26:51 发布