指针操作一维字符型数组
const int *p = &a//限定基类型,表示不能通过*p的方式来修改值(只读)
int constr *p = &a; //限定基类型,表示不能通过*p的方式来修改值
const就近原则,离谁进,就限定谁
int * const p = &a;//限定指针变量p,p为只读
const int * p = &a;//p *p 都不可修改
应用:
1.如果不想通过*p方式改变基类型对应的数据
2.如果指针变量不想被修改
const的优势:
1.提前发现问题
2..const char * 提高代码健壮性
实参:
可以 数组名,指针变量,字符串本身
能写成const的都要写成const
指针+字符串
char s[] = "hello"//表示在栈上开辟了一块空间,用字符串常量hello进行初始化
const char *p = "hello"//表示再字符串常量区开辟了空间,p指向该字符串
memcpy :拷贝内存空间
void *memcpy(void *dest, const void *src, size_t n(总字节数))
void * //空类型的指针,也叫万能指针,可以接受任意类型的指针
注意:
如果用空类型的指针进行间接运算必须转换成有明确类型的指针
指针和二维数组
int a[3][4];
int[4] a[3];
int (*p)a[3];// p指向二维数组名, *p 是里面的一维数组名
*(*(p + i) + j) = a[i][j];