首页 > 其他分享 >C语言——指针初阶(三)

C语言——指针初阶(三)

时间:2024-11-30 15:34:13浏览次数:12  
标签:arr 初阶 int C语言 CSDN 数组 指针

目录

一.指针-指针

        代码1:

运行结果:

        代码2:

运行结果:

        代码3:

运行结果:

二.指针数组

例:

往期回顾


一.指针-指针

        指针减去指针的前提:两个指针指向同一块空间。

        指针减去指针的绝对值得到两个指针之间的元素个数。

        比如&arr[9]-&arr[0]=9;

        接下来我们回顾求一个字符串长度的代码,并用指针减去指针来实现这个功能。

        代码1:

#include <stdio.h>
#include <string.h>
int main()
{
	char arr[] = "abcdef";
	int len = strlen(arr);
	printf("%d", len);
	return 0;
}

利用库函数strlen求字符串长度;

运行结果:

        代码2:

int my_strlen(char* str)
{
	int count = 0;
	while (*str != '\0')
	{
		count++;
		str++;
	}
	return count;
}
int main()
{
	char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("%d", len);
	return 0;
}

写一个my_strlen函数实现库函数strlen的功能。

运行结果:

        代码3:

int my_strlen(char* str)
{
	char* start = str;
	while (*str != '\0')
	{
		str++;
	}
	return str-start;
}
int main()
{
	char arr[] = "abcdef";
	int len = my_strlen(arr);
	printf("%d", len);
	return 0;
}

运行结果:

二.指针数组

        指针数组是指针还是数组?

        答案:是数组。是存放指针的数组。

        数组我们已经知道整形数组,字符数组。比如int arr[],char arr[];

        而指针数组是存放地址(指针)的数组

        int* arr3[5];//是什么? arr3是一个数组,有五个元素,每个元素是一个整形指针。

例:

        利用一维数组模拟二维数组。

代码如下:

int main()
{
	int a[] = { 1,2,3,4 };
	int b[] = { 2,3,4,5 };
	int c[] = { 3,4,5,6 };
	int* arr[3] = { a,b,c };
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		int j = 0;
		for (j = 0; j < 4; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}
	return 0;
}

为什么a,b,c能放进去???

因为a表示a[]首元素地址,以此类推,并且int *arr是指针数组。

本期指针初阶(三)就到这里~~~

往期回顾

C语言——指针初阶(二)-CSDN博客

C语言——海龟作图(对之前所有内容复习)-CSDN博客

C语言——指针初阶(一)-CSDN博客

C语言函数递归经典题型——汉诺塔问题_《汉诺塔问题》-CSDN博客

C语言——数组基本知识(二)-CSDN博客

C语言——数组基本知识(一)-CSDN博客

C语言——数组逐元素操作练习-CSDN博客

C语言编程练习:验证哥德巴赫猜想 进制转换 rand函数-CSDN博客

标签:arr,初阶,int,C语言,CSDN,数组,指针
From: https://blog.csdn.net/hjx1235/article/details/144151672

相关文章

  • 洛谷 P2895 [USACO08FEB] Meteor Shower S C语言 bfs
    题目:https://www.luogu.com.cn/problem/P2895题目描述贝茜听说一场特别的流星雨即将到来:这些流星会撞向地球,并摧毁它们所撞击的任何东西。她为自己的安全感到焦虑,发誓要找到一个安全的地方(一个永远不会被流星摧毁的地方)。如果将牧场放入一个直角坐标系中,贝茜现在的位置是原......
  • 洛谷 P1162 填涂颜色 C语言 bfs
    题目:https://www.luogu.com.cn/problem/P1162由数字 0 组成的方阵中,有一任意形状的由数字 1 构成的闭合圈。现要求把闭合圈内的所有空间都填写成 22。例如:6×6的方阵(n=6),涂色前和涂色后的方阵如下:如果从某个 0 出发,只向上下左右 4 个方向移动且仅经过其他 00 的情......
  • 洛谷 P1332 血色先锋队 C语言 bfs
    题目:https://www.luogu.com.cn/problem/P1332#submit题目背景巫妖王的天灾军团终于卷土重来,血色十字军组织了一支先锋军前往诺森德大陆对抗天灾军团,以及一切沾有亡灵气息的生物。孤立于联盟和部落的血色先锋军很快就遭到了天灾军团的重重包围,现在他们将主力只好聚集了起来,以......
  • C语言之用链表的方式解析与运算简单的波兰表达式
    C语言之用链表的方式解析与运算简单的波兰表达式我这里说的简单的波兰表达式,是指没有嵌套的加减乘除表达式,如:(+12),(-100905)定义基本的数据结构定义数据类型,全用大写字母,DT开头,后面附加类型名字:DT_OPERATOR定义表达式结构体,Express,自定义为Expr定义链表节点结......
  • C语言经典例题-13
    1.小乐乐走台阶题目描述:小乐乐上课需要走n阶台阶,因为他腿比较长,所以每次可以选择走一阶或者走两阶,那么他一共有多少种走法?输入描述:输入包含一个整数n(1≤n≤30)输出描述:输出一个整数,即小乐乐可以走的方法数。示例1输入:2输出:2示例2输入:10......
  • C语言中的结构体
    一.结构体声明首先要知道结构的成员可以是标量、数组、指针,甚至是其他结构体。例如描述一个学生:structStu{charname[20];intage;charsex[5];};那么如何创建一个结构体变量?intmain(){structStua,b,c;return0;}或者structStu{charname[20];......
  • C语言实现数组堆并解决TopK问题
    还是先定义结构体typedefintHPDataType;typedefstruct{HPDataType*array;intsize;intcapacity;}HP;voidHeapInit(HP*php){assert(php);php->array=NULL;php->capacity=php->size=0;}首先是它的初始化。voidHeapDestroy......
  • 智能指针和普通指针的区别
    智能指针和普通指针在使用方式上有相似之处,但也存在关键的区别。以下是对比与细节解析:1. 相似点智能指针在行为上模拟普通指针,因此某些使用方式相同:(1)指向对象智能指针和普通指针都可以指向动态分配的对象://普通指针int*rawPtr=newint(10);//智能指针std::shared_......
  • 【初阶数据结构和算法】初识树与二叉树的概念以及堆和完全二叉树之间的关系
    文章目录一、树的概念与结构1.树的概念2.树的相关术语3.树的表示4.树形结构实际运用举例二、二叉树的概念及特殊二叉树1.二叉树的概念2.特殊的二叉树满二叉树完全二叉树二叉树的性质(由满二叉树特点推导)三、二叉树的存储结构1.二叉树的顺序结构2.二叉树的链式结构......
  • P5015 [NOIP2018 普及组] 标题统计 C语言
    先说思路:跟着题意来就好,其实更多的是考察fgets()函数的基础运用,之后用循环遍历字符串,若是遇到空格和换行符就不计入,反之count++;这里也可以直接用isalnum()直接对输入的字符是否是字母或是数字进行判断。以下是代码实现:#include<stdio.h>#include<ctype.h>intmain(){......