char *p = "abc";
中"abc"是字符串常量,不能被改变。
******************************************************************************
想要改变字符指针指针向的值,就一定要将它指向一个连续可以被改变的字符数组。
如:
char *p;
char line[100];
strcpy (p,line);错!!!!!!
对:
char *p;
char line[100], lines[100];
p = liens;
strcpy (p,line);
*********************************************
关于void*指针:
void就是无类型的意思,数据都是有类型的,但是指针可以是没有类型的,如:void *p(定义一个指向void的指针);为什么要发明void?因为有时一个函数它不需要返回值所以可以用void abc();以达到目的;
在编写函数里,如果不需要返回值就一个要加void如声明这个函数不需要返回值,不加的话,高级的编译器都会报错,但也有一些编译器将它视为返回int型。
void不能用在定义一个变量上,因为它是无类型的,但数据就一定要有类型这样才有意义。
void可以用在指针上;意义为指向一个void存储的内存空间;因此所有的(“有类型”指针)都可以赋值给无类型指针。如:
char *p;
char *q;//定义一个指向字符型的指针
void *pp;//定义一个指向无类型的指针
char abc[] = "abc";//定义一个字符数组
p = abc;//把字符数组的头地址给p
pp = p;//赋值给无类型指针
q = (char)pp;//把无类型指针给有类型指针:注意这里一定要加强制转化符
这时:p == q;
ASNI C不允许对无类型的指针进行地址运算;因为:指针是指向地址的,不同的类型在内存地址上存储的单元大小都是不一样的。比如:
int *p;
int a[]={1,2,3};
本内容试读结束,登录后可阅读更多
下载后可阅读完整内容,剩余2页未读,立即下载