C语言指针相关知识点

 问题
指针 
1指针的概念?
2指针的特殊性体现在哪些方面?
3有人说:“指针就是地址!”对吗?
4指针的定义方法?
5与指针相关的7种运算,试总结一下
6char *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
9const做函数参数的使用
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;
194: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];
2010: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);
}
23int  main( )
{  
 char *p;
 p = (char *)malloc(sizeof(char)*10);
 p[10] = ‘a’;
}
24void 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值