指针不知道初始化为何值时,可先初始化为空指针。
int* p = NULL; //NULL,用来初始化指针,给指针赋值。
一、指针运算
1.指针 +/- 整数
2.指针 - 指针
|指针 - 指针| = 中间的元素个数 + 1(同一数组)(同一块空间内存)
(高地址 - 低地址)
#define _CRT_SECURE_NO_WARNINGS 1
//指针-指针
#include <stdio.h>
int main ()
{
int arr [10] = { 1,2,3,4,5,6,7,8,9,10 };
printf("%d\n", &arr[9] - &arr[0]);
return 0;
}
3.实现strlen函数
#define _CRT_SECURE_NO_WARNINGS 1
//strlen函数模拟实现
#include <stdio.h>
#include <string.h>
void my_strlen (char* str)
{
char* start = str;
char* end = str;
int count = 0;
while(*end != '\0')
{
end++;
}
count = end - start;
printf("该字符串长度是%d\n", count);
}
int main ()
{
char arr [] = "hello";
my_strlen(arr);
return 0;
}
4.指针的关系运算(比较大小)
标注规定:允许指向数组元素的指针与指向数组最后一个元素后面的那个内存位置的指针进行比较,但不允许与指向第一个元素之前的那个内存位置的指针进行比较。
#define _CRT_SECURE_NO_WARNINGS 1
//指针的关系运算
#include <stdio.h>
#define A 5
int main ()
{
float arr [A];
float* a;
for(a = &arr[A]; a > &arr[0];)//标准规定,可以与后一个内存位置比较。
{
*--a = 0;//先减减,再解引用。
}
return 0;
}
二、指针和数组
数组名是首元素地址,数组用指针来访问。
三、二级指针
二级指针:存放指针变量的地址
int <-> int* <-> int**
#define _CRT_SECURE_NO_WARNINGS 1
//二级指针
#include <stdio.h>
int main ()
{
int a = 10;
int* pa = &a;
int** ppa = &pa;//二级指针
printf("%p\n", pa);
printf("%p\n", ppa);
return 0;
}
四、指针数组
存放指针的数组
#define _CRT_SECURE_NO_WARNINGS 1
//指针数组
#include <stdio.h>
int main ()
{
int a = 10;
int b = 20;
int c = 30;
int* arr[] = {&a, &b, &c};
int i = 0;
for(i = 0; i < 3; i++)
{
printf("%d ", *arr[i]);
}
return 0;
}
标签:arr,include,int,初识,数组,指针,十九,define
From: https://blog.csdn.net/m0_56351488/article/details/144408763