C语言基础 (9) 数组指针
- 复习
只要把地址拿到就能这么操作.. (这里是合法的地址,不是野指针)

- 只有定义变量后,此变量的地址才是合法的地址
- 野指针就是保存没有意义地址的指针变量
- 操作野指针变量本身不会有任何问题
- 操作野指针所指向的内存才导致段错误
(操作系统的内存不是你想用就用的)

0 ‘\0’ NULL是一个东西
02 作业讲解
03 指针数组
指针数组 它是数组
03 数组指针
int *p[10];

(!注意: char *a, int *b, double *c 的size of 都是4
应该是根据编译器 就像void* 长度是由编译器决定的
04 值传递
05 地址传递
值传递就是把内存中的那部分内容传递了一份(也就是复制了一份
引用传递是把地址传递过去

06 形参中的数组
// 形参中的数组,不是数组,它是普通指针变量
// 形参数组 int a[100000] int a[] int *a对编译器而言,没有任何区别
// 编译器都是当作int *处理
// 形参中的数组和非形参数组区别:
// void print_array[int a[100000]]
// void print_array(int a[])


07 返回局部变量的地址
指针数组,它是数组,每个元素都是指针
数组指针,它是指针,指向数组的指针 (就业班 这里不讲)
int b[10][10]
fun(b)
void fun(int b[10][10]); // ok
void fun(int **p); //err,二维数组不是二级指针
int *fun(); //返回值是指针类型,指针函数

(这段代码在不同编译器下表现不一样,主要是局部函数中的变量地址 当函数结束时是否被释放, 所以建议不要引用局部函数中的变量地址
8 返回全局变量地址


9 字符串打印说明

10 上午知识点复习
11 字符指针
12 字符串拷贝问题

13 字符串拷贝功能的实现

14 课堂答疑
15 const修饰的字符指针
16 字符串常量

17 文字常量区不允许修改

打印出来是一样的

// 2、字符串常量,文字常量区的字符串,只读,不能修改


还有一种要注意的错误:

(段错误)
18 文字常量区不能修改2
19 字符串常量初始化问题

20 main形参使用说明


注意:两个**的不是接二维数组的,是接指针数组的


讲一下main函数的参数:

发现其实和之前的是一个套路:


(第0个参数 第1个参数 第2个参数…
在继续深入..

cp和mv就是C语言写的
后面就是传的参数
21 课堂答疑

(如果printf %x a和&a[0] 是同一个地址
但是sizeof的时候结果是不一样的
22 查找匹配字符串出现次数

23 两头堵模型
#include <stdio.h>
#include <string.h>
int main(int argc, char const *argv[])
{
char *p = " 123456789 ";
char *start = p; // 首元素地址
char *end = p + strlen(p) - 1; // 尾元素地址
// 从左往右
while (*start == ' ' && *start != '\0')
{
start++;
}
// 从右往左 注意这个 end!=p 简直骚操作
while (*end == ' ' && end != p)
{
end--;
}
int n = end - start + 1;
printf("n = %d\n", n);
char buf[100] = "aaaaaaaaaaaaaaaaaaa";
strncpy(buf, start, n);
buf[n] = 0; // 结束符
printf("buf = %s\n", buf);
return 0;
}
24 作业
C语言基础 (9) 数组指针的更多相关文章
- go语言基础之数组指针做函数参数
1.数组指针做函数参数 示例: package main //必须有个main包 import "fmt" //p指向实现数组a,它是指向数组,它是数组指针 //*p代表指针所指向 ...
- 嵌入式-C语言基础:数组指针
定义一个数组指针,指向二维数组: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//定义二维指针数组 p=a;//指向二维数组 ...
- Go语言基础之数组
Go语言基础之数组 本文主要介绍数组(array)及它的基本使用. Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化 ...
- GO学习-(8) Go语言基础之数组
Go语言基础之数组 Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为 ...
- R语言基础:数组&列表&向量&矩阵&因子&数据框
R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...
- Java之--Java语言基础组成—数组
Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...
- 第二十四节:Java语言基础-讲解数组的综合应用
数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- C语言学习笔记--数组指针和指针数组
C 语言中的数组有自己特定的类型,数组的类型由元素类型和数组大小共同决定.(如 int array[5]类型为 int[5]) 1.定义数组类型 C 语言中通过 typedef 为数组类型重命名:ty ...
随机推荐
- mybatis mapper xml文件配置resultmap时,id行和result行有什么区别?
mybatis mapper xml文件配置resultmap时,id行和result行有什么区别? <resultMap id = "CashInvoiceMap" typ ...
- 【cl】本地安装maven的jar包报错Artifact is already in the local repository
原因是我直接把jar包放在了仓库里面 解决办法:将jar办放在不是仓库路径位置,在进行install就okle
- AES 加密位: 128位,加密模式:CBC, 填充模式:Zeros
// AES 加密 public byte[] AESEncrypt(string text) { byte[] data = Encoding.Unicode.GetBytes(text); Sym ...
- c22---枚举
// // main.c // 枚举基本概念 #include <stdio.h> int main(int argc, const char * argv[]) { // int sex ...
- 深度 | AI芯片之智能边缘计算的崛起——实时语言翻译、图像识别、AI视频监控、无人车这些都需要终端具有较强的计算能力,从而AI芯片发展起来是必然,同时5G网络也是必然
from:https://36kr.com/p/5103044.html 到2020年,大多数先进的ML袖珍电脑(你仍称之为手机)将有能力执行一整套任务.个人助理将变的更加智能,它是打造这种功能的切入 ...
- [NOIP 2007] 树网的核
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1999 [算法] 树的直径 + 单调队列 [代码] #include<bits/ ...
- 【转】学会这13个原则写UI界面文案,用户才能秒懂
原文网址:http://www.niaogebiji.com/article-12011-1.html 摘要: 首先,在写UI文案之前,为了理清思路,要先搞清楚三个问题:我(设计师)想让用户做什么? ...
- Hdu-6230 2017CCPC-哈尔滨站 A.Palindrome Manacher 主席树
题面 题意:给你一个字符串,问你满足s[i]=s[2n-i]=s[2n+i-2]的子串(这子串长度为3n-2)有多少个,原字符串长度<=5e5 题解:对于这种子串,其实要满足2个回文,跑过一次M ...
- SQL Server的自动备份设置及排错记事
1.启动 SQL Server Management Studio管理器,登录进去. 2.在左侧可以看到这个,我们展开“管理”. 3.展开“管理”后,我们在“维护计划”项目上单击右键,在弹出菜单里选择 ...
- Xcode7.3 使用NSURLSession发送HTTP请求报错
控制台打印:Application Transport Security has blocked a cleartext HTTP (http://) resource load since it i ...