首页 > 其他分享 >C语言初级阶段7——指针3

C语言初级阶段7——指针3

时间:2022-11-07 15:11:24浏览次数:51  
标签:pp 初级阶段 int C语言 ++ printf main 指针

C语言初级阶段7——指针3

指针数组:描述的是一个数组,存储的是指针

#include<stdio.h>
void fun(int(*arr)[2])
{
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 2; j++)
		{
			printf("%d\t", arr[i][j]);
		}
		printf("\n");
	}
}
int main() {

	int a = 3, b = 2, c = 1;
	int* p2 = &a, * p3 = &b, * p4 = &c;
	int *p1[3] = { p2,p3,p4 };
	int arr1[2][2] = {
		1,2,
		3,4,
	};
	fun(arr1);
	return 0;
}

数组指针:是一个指针,指向的是一个数组(二维数组起)

#include<stdio.h>
int main() {
	int arr[3][3]
	{
		1,2,3,
		4,5,6,
		7,8,9
	};
	int(*p)[3] = arr;//这个[3]是列,行不用写。
		for (int i = 0; i < 3; i++)
		{
			for (int j = 0; j < 3; j++)
			{
				printf("%d\t", arr[i][j]);
			}
			printf("\n");
		}
	return 0;
}

多级指针

int c;
int *a=&c;//一级指针
int **a1 = &a;//二级指针
int ***a2 = &a1;//三级指针
int ****a3 = &a2;//四级指针
int *****a3 = &a3;//五级指针

指针的偏移

#include<stdio.h>
int main()
{
	int n[3][4]
	{
		{1,2,3,4},
		{8,7,6,5},
		{9,10,11,12},
	};
	int(*pn)[4] = n; int* p[3] = { n[1],n[0],n[2] };
	int **pp = p;
	printf("%d\n", *(*(pp+1) + 2));//两次解引用,  重点:*(pp+1)=pp[1]
	printf("%d\n", *((pp[2]) - 3));//*(pp+2)=pp[2]
	printf("%p\n", *pp++);
	printf("%d\n", *(pp[1] + 2));
	printf("%d\n", *p[1]++);
	printf("%d\n", *(p[1] + 2));
	printf("%d\n", *(p[2] - 3));
	const char* str[4] =    //VS2022需要在char前面加上const
	{
		"好好学习,天天向上。",
		"学而时习之,不亦说乎!",
		"三人行,必有我师。",
		"学而不思则罔,思而不学则殆。",
	};
	for (int i = 0; i < 4; i++)
	{
		printf("%s\n", str[i]);
	}
	return 0;
}

内存四区:栈区、静态全局区,堆区,代码区

1.栈区:存储的局部变量系统会自动申请释放内存。

#include<stdio.h>
int main()
{
	for (int i = 0; i < 10; i++)
	{
		int a = 0;
		printf("%d\n", a);
		a++;
	}
	return 0;
}

2.堆区:自己手动申请的内存区域,需要我们自己手动释放。

3.静态全局区:存储的静态和全局变量数据,内存只会存在一份,只会初始化一次,在程序执行结束的时候被系统释放。

#include<stdio.h>
int main()
{
	for (int i = 0; i < 10; i++)
	{
		static int a = 0;
		printf("%d\n", a);
		a++;
	}
	return 0;
}

4.代码区:存储的是函数等。

标签:pp,初级阶段,int,C语言,++,printf,main,指针
From: https://www.cnblogs.com/George-Judson/p/16866029.html

相关文章

  • 实验4 类与数组、指针
    task5.cpp#include<iostream>#include"vectorInt.hpp"voidtest(){usingnamespacestd;intn;cin>>n;vectorIntx1(n);for(autoi......
  • 计算机等级考试二级C语言上机题集(第76~80套)
    第76套1.程序填空题给定程序中,函数fun的功能是:找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。例......
  • 计算机等级考试二级C语言上机题集(第71~75套)
    第71套1.程序填空题给定程序中,函数fun的功能是:将参数给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中读入,并调用库函数atoi和atof将字符串转换成相......
  • 计算机等级考试二级C语言上机题集(第66~70套)
    第66套1.程序填空题给定程序中,函数fun的功能是:在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符。若找不到相同的字符则函数不做任何处理。例如......
  • 计算机等级考试二级C语言上机题集(第61~65套)
    第61套1.程序填空题给定程序中,函数fun的功能是:找出100~x(x<=999)之间所有整数中各位上数字之和为15的整数,然后输出;符合条件的整数个数作为函数值返回。例如,若x=500时,100~50......
  • 计算机等级考试二级C语言上机题集(第56~60套)
    第56套1.程序填空题给定程序中,函数fun的功能是:在带头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号;若不存在值为ch的结点,......
  • 计算机等级考试二级C语言上机题集(第51~55套)
    第51套1.程序填空题给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6......
  • 初学C语言(3)
    由于疫情原因在学校无法更新。常量:1.字面常量:直接输入即可。如图:2.const修饰的常量:intmain(){constintnum=3;//语法形式为const+数据类型+变量名+=+变......
  • <一>类,对象,this指针
    C++类:实体的抽象类型实体(属性,行为)->ADT(abstractdatatype)类(属性->成员变量,行为->成员方法)OOP语言4大特征抽象封装/隐藏(通过publicprivateprotected)......
  • 嵌入式-C语言基础:联合体和共用体的概念
    有时候同一块内存空间存放类型不同,不同类型的变量共享一块空间。结构体和共用体的区别:(1)结构体元素有各自单独空间,共用体元素共享空间,空间大小由最大类型确定。(2)结构体元......