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