免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3177 | 回复: 1
打印 上一主题 下一主题

[C] C语言中指针的15个问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-24 13:44 |只看该作者 |倒序浏览
C语言中指针的15个问题
aqiaoboy

1 指针的四要素
  1指针变量,表示一个内存地址,通常为逻辑地址,与实际的物理地址还有一个映射关系。
2指针变量的长度,在WIN32下为四个字节,
  3指针指向的变量
   该内存地址空间下存放的变量,具体内容可能是各种类型的变量。
  4 指针指向的变量的长度,以该内存地址空间开始的内存空间大小。
2 Const,volatile修饰指针的含义
const    char *cpch=”hello’;
表示指针指向的变量不可改变,但指针本身是可以改变的
char * const    pchc;
指针指向的变量可以改变,但指针本身不可改变。

Const  char * const pchc;
两者都不可变。
3 堆和栈上的指针
指针所指向的这块内存是在哪里分配的,在堆上称为堆上的指针,在栈上为栈上的指针。
在堆上的指针,可以保存在全局数据结构中,供不同函数使用访问同一块内存。
在栈上的指针,在函数退出后,该内存即不可访问。

4 什么是指针的释放?
具体来说包括两个概念。
1 释放该指针指向的内存,只有堆上的内存才需要我们手工释放,栈上不需要。
2 将该指针重定向为NULL。

5 near,far型指针的区别?
老式的IBM PC兼容机才有这种区别,因为老式机不能完全支持32位指针,
所以才分为16位指针,(near),和32位指针(far)
从386开始没有这种区别,都是32位指针。

6 数据结构中的指针?
其实就是指向一块内存的地址,通过指针传递,可实现复杂的内存访问。
7 函数指针?
指向一块函数的入口地址。

8 指针作为函数的参数?
比如指向一个复杂数据结构的指针作为函数变量
这种方法避免整个复杂数据类型内存的压栈出栈操作,提高效率。
注意:指针本身不可变,但指针指向的数据结构可以改变。

9 指向指针的指针?
指针指向的变量是一个指针,即具体内容为一个指针的值,是一个地址。
此时指针指向的变量长度也是4位。

10 指针与地址的区别?
区别:
1指针意味着已经有一个指针变量存在,他的值是一个地址,指针变量本身也存放在一个长度为四个字节的地址当中,而地址概念本身并不代表有任何变量存在。
2 指针的值,如果没有限制,通常是可以变化的,也可以指向另外一个地址。
   地址表示内存空间的一个位置点,他是用来赋给指针的,地址本身是没有大小概念,指针指向变量的大小,取决于地址后面存放的变量类型。

11 指针与数组名的关系?
  其值都是一个地址,但前者是可以移动的,后者是不可变的。

12 怎样防止指针的越界使用问题?
  必须让指针指向一个有效的内存地址,
1 防止数组越界
2 防止向一块内存中拷贝过多的内容
3 防止使用空指针
4 防止改变const修改的指针
5 防止改变指向静态存储区的内容
6 防止两次释放一个指针
7 防止使用野指针。


13 指针的类型转换?
指针转换通常是指针类型和void * 类型之前进行强制转换,从而与期望或返回void指针的函数进行正确的交接。


14 什么是指针退化?
如果用一个数组作为函数入参
比如
void fun(char a[100])
{
cout<<sizeof(a)<<endl; //四字节而不是100字节
}

15 指针的移动问题?

指针P ++具体移动的字节数等于指针指向的变量类型大小。

论坛徽章:
0
2 [报告]
发表于 2003-06-24 14:05 |只看该作者

C语言中指针的15个问题

写得还比较全的
函数参数我都用指针没有用数组

14 什么是指针退化?
如果用一个数组作为函数入参
比如
void fun(char a[100])
{
cout<<sizeof(a)<<endl; //四字节而不是100字节
}

像这样定义也不能保证检查传进来的参数对不对

  1. int a(char s[100])
  2. {
  3.     s[100]=1;
  4.     return 0;
  5. }

  6. main()
  7. {
  8.    char s[20]="hello";
  9.    a(s);
  10. }
复制代码


编译时使用dev-c++没有问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP