首页 > 其他分享 >十九、初识指针(2)

十九、初识指针(2)

时间:2024-12-12 08:59:39浏览次数:3  
标签:arr include int 初识 数组 指针 十九 define

指针不知道初始化为何值时,可先初始化为空指针。

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

相关文章

  • C语言之初识数组存在的问题
        首先我们先了解数组的概念,所谓数组,简单来说数组就是一组相同元素的集合。是用来存放一组相同类型元素的存储形式。    但是我们在开始学数组的时候会存在一些问题或者说是疑问。    1.数组的下表是从‘0’开始,所以我们在访问数组的某个元素时,我......
  • 初识Redis(一)
    1认识NoSQL1.1SQL vsNoSql SQL-关系型数据库NoSQL-非关系型数据库数据结构结构化非结构化:#1键值类型(redis);#2文档类型(MongoDB);#3列类型(HBase);#4Graph类型(Neo4j)数据关联关联的无关联的查询方式SQL查询非SQL事务特性ACIDBASE(基本满足事务,非强一致......
  • C语言(函数指针与指针函数)
    函数指针定义:函数指针本质上是指针,它是函数的指针(定义了一个指针变量,变量中存储了函数的地址)。函数都有一个入口地址,所谓指向函数的指针,就是指向函数的入口地址。这里函数名就代表入口地址。函数指针存在的意义:让函数多了一种调用方式函数指针作为形参,可以形式调用(回调......
  • C语言(指针数组和数组指针)
    变量指针与指针变量指针变量指向数组通过指针引用数组元素引用一个数组元素,可以用:下标法:如a[i]形式。指针法:如*(a+i)*(p+i)。其中a是数组名,p是指向数组元素的指针变量,其初值:p=a;案例需求:有一个整型数组a,有10个元素。输出数组中的全部元素。分析:要输出各元素的值,有三......
  • (nice!!!)(LeetCode 热题 100) 76. 最小覆盖子串(哈希表、滑动窗口、双指针)
    题目:76.最小覆盖子串思路:用哈希表来记录字符串t中字符出现的情况。然后用双指针来实现滑动窗口,找到最小的字符串即可。时间复杂度为0(m+n),细节看注释。classSolution{public:stringminWindow(strings,stringt){ //哈希表unordered_map<char......
  • Go指针进阶:从入门到被虐,90%开发者都踩过这些坑
    Go指针进阶:从入门到被虐,90%开发者都踩过这些坑!原创 瀛洲在线编程之道 黑客编程之道  2024年11月17日21:10 吉林 听全文黑客编程之道分享黑客编程技术,Go、Python、Rust、Java等编程技术166篇原创内容公众号指针是Go语言中最强大但也最容易出错的特......
  • #C01L07P03. C01.L07.for语句初识.for语句的使用说明
    1.循环变量的初值和终值应该是同一种类型,可以是整型、字符型、布尔型这些有序数据,但不能为实型。例如:循环变量是浮点型:for(floati=3.5;i<=8.5;i++) cout<<i;Copy上面程序中,i变量是浮点型,这种写法是错误的。还有这样的写法:for(inti=1.1;i<=9.9;i++) cout<<i;......
  • 初识Linux · 编写生产消费模型(2)
    目录前言:RingQueue编写生产消费模型认识接口开始编写前言:前文我们介绍了基于阻塞队列实现生产消费模型,使用阻塞队列实现生产消费模型中,我们学习到了pthread_cond_wait的第二个参数的重要性,不仅会解锁,此时锁被其他人持有,当条件满足的时候,就重新竞争锁,所以在pthread_cond_......
  • 初识Linux · 编写生产消费模型(1)
    目录前言:阻塞队列前言:前文我们花了大量篇幅介绍了线程同步的概念,同时引出了条件变量,认识了相应的接口,并且快速编写了一个简单的测试用例见识了一下条件变量的使用,并且有意思的是,在Ubuntu环境下,man不了条件变量对应的接口,所以想要查询对应的接口可以使用对应的centos系统。......
  • cpp智能指针
      普通指针的不足new和new[]的内存需要用delete和deletel]释放。程序员的主观失误,忘了或漏了释放。程序员也不确定何时释放。普通指针的释放类内的指针,在析构函数中释放。C++内置数据类型,如何释放?new出来的类,本身如何释放?C++11新增三个智能指针类型uniqu......