1.字符指针
#include<stdio.h>
int main()
{
char ch = 'w';
char* pc = &ch;
printf("%c\n", *pc);
char* p = "abcdef";//"abcdef" - 常量字符串 - 不能改
printf("%s\n", p);
char arr[10] = "abcdef";
char* p2 = arr;
*p2 = 'w';
printf("%s\n", arr);
}
输出结果:
int main()
{
char arr1[] = "abcdef";
char arr2[] = "abcdef";
char* p1 = "abcdef";
char* p2 = "abcdef";
if (arr1 == arr2)
{
printf("arr1 == arr2\n");
}
else
{
printf("arr1 == arr2\n");
}
if (p1 == p2)
{
printf("p1 == p2\n");
}
else
{
printf("p1 != p2\n");
}
return 0;
}
输出结果:
int main()
{
char ch = 'w';
char* pc = &ch;
//这种写法是不严谨的 - gcc下会报错
char* ps = "hello bit";//常量字符串
//严谨的写法
const char* ps2 = "hello bit";
return 0;
}
2.指针数组
int main()
{
int a = 10;
int b = 20;
int c = 30;
int* arr[3] = {
&a, &b, &c };
int i = 0;
for (i = 0; i < 3; i++)
{
printf("%d ", *(arr[i]));
}
return 0;
}
输出结果:
int main()
{
int arr1[] = {
1, 2, 3 };
int arr2[] = {
2, 3, 4 };
int arr3[] = {
3, 4, 5 };
int* arr[] = {
arr1, arr2, arr3 };
int i = 0;
for (i = 0; i < 3; i++)
{
int j = 0;
for (j = 0; j < 3; j++)
{
printf("%d ", arr[i][j]);
}
printf("\n");
}
return 0;
}
输出结果:
3.数组指针
定义:
int main()
{
int arr[10] = {
1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
//int* p = arr;//数组名是首元素的地址
//数组指针 = 数组的地址
//&数组名拿到的是数组的地址
int(* p)[10] = &arr;//p就是数组指针,该指针指向了一个数组,数组10个元素,每个元素的类型是int
char* ch[5];
char* (*pc)[5] = &ch;
return