指针数组:char* p[] 数组里面存放指针
//const作用: 定义一个变量,值不可被改变,在整个作用域中固定 #includeint main() { int p1[5] = {1,2,3,45,5}; printf("%dn", p1[1]);// 数组通过下标访问值 const char* p[] = { "你","好","世界" }; //指针数组 printf("%sn", p[1]); int i; for (i = 0; i < 5; i++) { printf("%dn", p1[i]);//循环访问数组中的所有值 } for (i = 0; i < 3; i++) { printf("%s", p[i]);//循环访问数组中的所有值 } return 0; }
数组指针:int(*p2)[5] 指针指向数组
#includevoid空指针的应用int main() { int temp[5] = { 1,2,3,4,5 }; int(*p2)[5] = &temp; int i; for (i = 0; i < 5; i++) { printf("%dn", *(*p2 + i));//数组指针 } for (i = 0; i < 5; i++) { printf("%dn", temp[i]);//数组 } return 0; }
任何类型的指针都可以赋值给void指针。
#includeint main() { int a = 1024; int* pi = &a; char p[] = "i love you"; char* ps = p; void *pv; printf("%pn", &a); pv = pi; printf("%pn", pv); printf("%dn", *pi); printf("%dn", *(int*)pv); printf("%pn", p); pv =ps; printf("%pn", pv); printf("%sn", ps); printf("%sn", (char*)pv); }
地址可以直接赋值,但是输出里面的值的时候,必须进行强制类型转换



