top/contents search

4. 指针

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 “近”指针和“远”指针是什么意思?


回到顶部

contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管