一、字符指针
-
定义
- 指针就是个变量,用来存放地址--唯一标识的一块内存空间
- 指针的大小是固定的4/8字节(32位/64位)
- 指针是有类型的,指针的类型决定了指针+-整数的步长,指针的解引用操作的时候的权限
-
指针的运算
#include <stdio.h>
int main()
{
char ch = 'w';
char* p = &ch;
printf("%c %c\n", ch, *p);
char* sp = "abcdef";
printf("%c\n", *sp);
printf("%s\n", sp);
return 0;
}
二、指针数组
-
定义
存放指针的数组
char* sp[4] = {"abcdef","hello","world","haha"};
#include <stdio.h>
int main()
{
const char* arr[4] = { "abcdef","hello","world","haha" };
int i = 0;
for (i = 0; i < 4; i++)
{
printf("%s\n", arr[i]);
}
return 0;
}
数组有4个元素,元素类型为char*指针,每个指针指向每个字符串的首元素地址,for循环打印,arr[1]是指针变量,存的是首字符地址.%s会打印整个字符串
利用数组指针实现二维数组打印
#include <stdio.h>
int main()
{
//const char* arr[4] = { "abcdef","hello","world","haha" };
//int i = 0;
//for (i = 0; i < 4; i++)
//{
// printf("%s\n", arr[i]);
//}
int arr1[5] = { 1,2,3,4,5 };
int arr2[5] = { 2,3,4,5,6 };
int arr3[5] = { 0,0,0,0,0 };
const int* arr[3] = { arr1,arr2,arr3 };
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 5; j++)
{
printf("%d ", *(arr[i] + j));
}
printf("\n");
}
return 0;
}