4.1 指针到底有什么用?
4.2 我正在尝试声明一个指针并为其分配一些空间,但它不起作用。这段代码有什么问题?
char *p; *p = malloc(10);
4.3 是*p++使p自增,还是它指向的内容?
4.4 我正在尝试使用指针来操作一个数组int数组。这段代码有什么问题?
int array[5], i, *ip; for(i = 0; i < 5; i++) array[i] = i; ip = array; printf("%d\n", *(ip + 3 * sizeof(int)));我期望最后一行打印 3,但它打印的是垃圾值。
4.5 我有一个char *指针,它碰巧指向一些int,我想逐个遍历它们。为什么不行?
((int *)p)++;的函数调用是否会工作?
4.6 为什么我不能对void *指针执行算术运算?
4.7 我有一些代码试图解包外部结构,但它因“未对齐访问”的消息而崩溃。这是什么意思?
4.8 我有一个函数接受并应该初始化一个指针
void f(int *ip) { static int dummy = 5; ip = &dummy; }但是当我像这样调用它时
int *ip; f(ip);调用者中的指针保持不变。
4.9 假设我想编写一个函数,它接受一个通用指针作为参数,并且我想模拟通过引用传递它。我能否将形式参数类型设置为void **,并执行类似这样的操作?
void f(void **); double *dp; f((void **)&dp);
4.10 我有一个函数
extern int f(int *);它接受一个指向int的指针。我该如何通过引用传递一个常量?像这样的调用
f(&5);似乎行不通。
4.11 C 语言有“引用传递”吗?
4.12 我见过用于通过指针调用函数的不同语法。这是怎么回事?
4.13 什么是完全通用的指针类型?当我尝试将函数指针存入void *.
4.14 整数如何与指针相互转换?我能否暂时将一个整数存入指针,反之亦然?
4.15 如何将一个int转换为char *?我尝试了强制类型转换,但它不起作用。
4.16 这段声明有什么问题?
char* p1, p2;当我尝试使用p2.
4.17 “近”指针和“远”指针是什么意思?