C语言初级阶段7——指针3
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.代码区:存储的是函数等。
C语言初级阶段7——指针3的更多相关文章
- Swift3.0语言教程使用指针创建和初始化字符串
Swift3.0语言教程使用指针创建和初始化字符串 Swift3.0语言教程使用指针创建和初始化字符串苹果的Swift团队花了不少功夫来支持C的一些基础特性.C语言中为我们提供了指针,Swift也不例 ...
- C语言中的指针数组
C语言中的指针数组是什么,像 char *a[]={"ddd","dsidd","lll"}; 这里讲一下注意如果我们使用了a也就是首元素的 ...
- 【ZZ】C 语言中的指针和内存泄漏 & 编写高效的C程序与C代码优化
C 语言中的指针和内存泄漏 http://www.ibm.com/developerworks/cn/aix/library/au-toughgame/ 本文讨论了几种在使用动态内存分配时可以避免的陷 ...
- GO语言中的指针
http://www.tizgrape.com/?p=100 Go语言中的指针语法和C++一脉相承,都是用*作为符号,虽然语法上接近,但是实际差异不小. Go使用var定义变量: var v6 *in ...
- 由链表初始化看C语言的二级指针
先来看C语言创建链表.插入节点和遍历链表的一段代码: #include <stdio.h> #include <stdlib.h> typedef int ElemType; ...
- C语言 > 数组和指针
C语言 数组和指针 const: 关于指针和const需要注意一些规则.首先,把const数据或非const数据的地址初始化为指向const的指针或为其赋值是合法的. 然而,只能把非const数据的地 ...
- C语言结构体指针的引用问题
在写栈的一个应用时遇见这样的一个问题 SqStack s; s->base = (int*)malloc(sizeof(int)*10); 通过这样一个代码引用的时候,会导致程序出现异常 经过一 ...
- Go语言基础之指针
区别于C/C++中的指针,Go语言中的指针不能进行偏移和运算,是安全指针. 要搞明白Go语言中的指针需要先知道3个概念:指针地址.指针类型和指针取值. Go语言中的指针 Go语言中的函数传参都是值拷贝 ...
- c语言之函数指针应用
c语言之函数指针应用 1.函数指针与指针函数 在开始运用函数指针前,我们需要将两个概念即:函数指针与指针函数搞清楚. 函数指针,指明这个一个函数,但返回值为指针类型,语法格式为: 类型名* 函数名A( ...
- C语言中的指针笔记
C语言指针 得到变量的地址 可以使用&运算符找到变量保存在内存中的位置 int x = 1; printf("x的内存地址是"%p\n",&x) %p格式 ...
随机推荐
- Idea Diff工具介绍
背景 项目中有大量的数据对比工作,需要生成文件,与旧文件进行对比,自动化对比和手工对比验证,自动化对比采用java-diff工具类或者手动去除换行空格注释,进行字符串对比,手动化对比可以采用git d ...
- nginx,git,maven面试题
1.简述一下什么是Nginx,它有什么优势和功能? Nginx是一个web服务器和方向代理服务器,用于HTTP.HTTPS.SMTP.POP3和IMAP协议.因 它的稳定性.丰富的功能集.示例配置文件 ...
- laravel request lifecycle
1, index.php2, 生成service container3, service provider register/booted4, dispatch routing5, middlew ...
- 华为交换机,改vlan的方法
telnet 登录1.1.1.111, 如果登录再到其他交换机,需要在用户状态,telnet其他的ip.不能在系统用户状态下跳转登录. sys改为系统用户 状态符由尖括号,改为方括号 display ...
- [*]Quadratic Residual Networks: A New Class of Neural Networks for Solving Forward and Inverse Problems in Physics Involving PDEs
Accepted by SIAM International Conference on Data Mining (SDM21) 本文提出了二次残差网络,通过在应用激活函数之前,添加二次残差项到输入的 ...
- TP5 事务处理加锁
首先,数据库类型要是InnoDB,其次,加锁必须跟事务同时使用,还有,查询的时候都必须带锁,比如: db('sms')->lock(true)->where(['id'=>1])-& ...
- 网络很慢mtu设置
[root@db-***** etc]# cat /etc/rc.local #!/bin/sh # # This script will be executed *after* all the ot ...
- Access denied You do not have access to chat.openai.com. The site owner may have set restrictions that prevent you from accessing the site.解决办法
报错 Access denied You do not have access to chat.openai.com. The site owner may have set restrictions ...
- 打包Assetbundle
using UnityEngine;using System.Collections;using UnityEditor;/// <summary>/// 脚本位置:Editor文件夹下/ ...
- windows 系统的端口问题
netstat -ano 列出所有正在使用的端口netstat -aon|findstr "4300" 查询占用该端口的PIDtasklist|findstr "4464 ...