1.出现野指针的后果是什么?
答:你的数据会出现危险,存放在堆中的数据,可能会被破坏,用来处理堆的数据结构,也可能会被破坏,甚至操作系统的数据也可能会被修改,甚至有时上述三种破坏情况,都会同时出现。
此后可能发生的事情,取决于,这样亮点,第一,内存中的数据,被破坏的程度有多大,第二,内存中的被破坏的部分还要被使用多少次。
2.指针在系统中的纯在。
答: (1)系统为指针分配内存空间,
(2)指针有自己的地址,
(3)指针能够存值,但这个值,比较特殊,是地址。
3.指针常量与常量指针的不同?
答: 常量指针指向的内容不可变,但地址可以改变,即指针可以指向别的地址。指针常量是指指针本身不可以改变,而内容可以修改。
如果指针常量指向的是字符指针变量,那么当修改*p时,原则上能够修改,再便宜,是能够通过,但在运行时不能通过,因为他试图去修改常量区的内容,显示是非法的。
当指针常量指向一个另外一个指针时,当这个指针指向别的内容时,那么,指针常量,还是指向原来的内容。
4.NULL总是等于0吗?
答:
NULL 用作初始化指针,这时 “没有东西”就是 “空”。给句柄赋值 NULL,它就是 空句柄NULL 用作字符串结尾,就是 ASCLL 不可见字符 '\0' 或"0"。NULL 严格来说 是一样“没有东西”的东西。 你可以理解为0,但它实际上不是数值0
。
5.函数的返回值为指针与整型的差别?
答:返回值为一指针的函数在调用成功时几乎总是返回一个有效指针,其值不等于零,在调用失败时总是返回一个空指针,其值等于零。返回值为一整形值的函数在调用成功时几乎总是返回一个零值,调用失败时总是返回一个非零值。
6.sizeof与strlen的区别?
答:sizeof是求数据类型所占的空间大小;strlen是字符串的长度;
char *c="abcdef";
char d[ ]="abcdef";
char e[]={'a','b','c','d','e','f'};
printf("adad/n",sizeof(c),strlen(c) );
printf("&d&d/n",sizeof(d)strlen(d) );
printf("ded/n",sizeof(e) ,strlen (e) );
输出的结果是:
4 6
7 6
6 14
7.函数指针与指针函数。
答:
指针函数是指带指针的函数,即本质是一个函数,函数返回类型是某一类型的指针。首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。
函数指针是指向函数的指针变量,即本质是一个指针变量。
8.C语言中函数的地址。
答:第一步:定义函数指针;
第二步:定义函数;
第三步:把函数的地址赋给函数指针;
第四步:通过函数指针去调用这个函数。
9.什么是指针的值?
答:int a=1;
int *p=&a;
指针变是的值也就是指针的值p,也就是变量a的地址,即100,也就是说p=100,
而指针指向的值,指的是指针所指向的地址100这个内存位置,所对应的值,也就是a的值,为1。
指针的只是指针本身储存的数值,这个值将被编译器当作一个地址,而不是一般的数值。
10.指针的运算有哪几类?
答:(1)指针+(-)整数;
(2)指针-指针;
(3)关系运算:<, <=, >, >=。