知识点:1、2、3、4、5
1、指向数组的指针,指针数组的区别:
BYTE arry[10]={1,2,3};
BYTE *ptrarry=arry;
2、指针数组(字符指针数组)每个数组都是一个指针
char *strarry[3]={"hello","test","tttt"};
3、指向字符串的字符指针(字符指针一般用来指向字符串) 字符串有两种表达方式:一、字符数组'/0'结尾;二、字符串常量(用字符指针来表示)
char *str ="string";
cout<<str; string
cout<<*str;s
为什么呢? 这个是规定,需要记忆。
4、指向常量的指针(表示方法,最前面加const)
const int a=3,int b=4;
const int *ptr=&b;
ptr = &a; // 正确 不限制指针变量本身的操作
*ptr = 5; // 错误 限制指针间接访问的操作。不会限制对指针指向的空间操作。
b =5; // 正确
5、指针常量
int k=5,j=6;
int * const ptr =&k;
ptr =&j // 错误 限制指针变量本身的操作。
*ptr =32;//正确 不限制指针间接访问的操作。
6、void *一个指针类型,数据内容是内存地址,数据类型是void
实际问题:memcpy(str,'/',1);有错吗?为什么?memcpy(void *,const void *,size_t)
memcpy(str,"/",1);才是正确的,
const void *是 一个指向常量的指针,数据类型是void
const void * ="/" 正确
const void * ='/' 错误
2011-04-06 wcg
7 、字符数组初始化。
字符数组可以用多个字符或一个字符串进行初始化,但需注意:字符常量是以空字符(‘/0’)结尾,因而也占据一个数组元素的位置。下面是一些初始化字符串数组的例子:
char cal[]={'c','h','a','r'}; //定义了大小为4的字符数组
char ca2[]="char"; //定义了大小为5的字符数组,注意它与上面的语句不等价
char ca3[4]="char"; //错误!数组大小(4)小于初始化值的个数(5)
BYTE szchar[] ="/x10/x20/x30/x40";
2011-06-26 wcg
char szTaskBuffer[]={0x00,0x03,0x01,0x02,0x04};
2013-12-26 wcg