1. 复习

只要把地址拿到就能这么操作.. (这里是合法的地址,不是野指针)

  1. 只有定义变量后,此变量的地址才是合法的地址
  2. 野指针就是保存没有意义地址的指针变量
  3. 操作野指针变量本身不会有任何问题
  4. 操作野指针所指向的内存才导致段错误

(操作系统的内存不是你想用就用的)

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) 数组指针的更多相关文章

  1. go语言基础之数组指针做函数参数

    1.数组指针做函数参数 示例: package main //必须有个main包 import "fmt" //p指向实现数组a,它是指向数组,它是数组指针 //*p代表指针所指向 ...

  2. 嵌入式-C语言基础:数组指针

    定义一个数组指针,指向二维数组: int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}; int (*p)[4];//定义二维指针数组 p=a;//指向二维数组 ...

  3. Go语言基础之数组

    Go语言基础之数组 本文主要介绍数组(array)及它的基本使用. Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化 ...

  4. GO学习-(8) Go语言基础之数组

    Go语言基础之数组 Array(数组) 数组是同一种数据类型元素的集合. 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化. 基本语法: // 定义一个长度为3元素类型为 ...

  5. R语言基础:数组&列表&向量&矩阵&因子&数据框

    R语言基础:数组和列表 数组(array) 一维数据是向量,二维数据是矩阵,数组是向量和矩阵的直接推广,是由三维或三维以上的数据构成的. 数组函数是array(),语法是:array(dadta, d ...

  6. Java之--Java语言基础组成—数组

    Java语言基础组成-数组 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的数组,数组 ...

  7. 第二十四节:Java语言基础-讲解数组的综合应用

    数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...

  8. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  9. C语言学习笔记--数组指针和指针数组

    C 语言中的数组有自己特定的类型,数组的类型由元素类型和数组大小共同决定.(如 int array[5]类型为 int[5]) 1.定义数组类型 C 语言中通过 typedef 为数组类型重命名:ty ...

随机推荐

  1. mysql5.7忘记root密码

    systemctl stop mysqld.service vi /etc/my.cnf [mysqld] skip-grant-tables skip-networking mysql -uroot ...

  2. Solr Update插件自定义Update Chain按条件更新索引

    背景:基于call客,来电和跟进记录等多个数据来源的用户文档,需要在更新是判断首来源的时间. 如对电话号码11xxxx来说,来电时间是今天,call客时间是昨天,而call客数据又可能因为网络原因晚上 ...

  3. [bzoj2124]等差子序列_线段树_hash

    等差子序列 bzoj-2124 题目大意:给定一个1~n的排列,问是否存在3个及以上的位置上的数构成连续的等差子序列. 注释:$1\le n\le 10^4$. 想法:这题就相当于是否存在3个数i,j ...

  4. linux 7.2 下安装maven

    由于现有项目采用maven打包所以需要安装maven 1.创建目录 mkdir /maven cd /maven 2.下载解压maven,这里选择maven版本为3.5.3 wget http://m ...

  5. logistic regression model

    logistic regression model LR softmax classification Fly logistic regression model loss fuction softm ...

  6. Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux开发环境[2.2]

    Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux开发环境[2.2] 2015-07   北京海淀区  ...

  7. 如何做URL静态化 和页面的静态化

    为什么要进行URL静态化? 如果帮到了您,您可以小支持一下,谢谢您   1.更好的迎合搜索引擎工作原理的爬行抓取机制:2.把网站URL静态化更有助于网站获得好的排名:3.URL静态化有利于用户体验.不 ...

  8. iOS总结(自己定义button)

    1.首先新建一个类该类继承UIButton 2.实现几个方法 1).改动字体的一些属性 -(instancetype)initWithFrame:(CGRect)frame{ self = [supe ...

  9. 【LeetCode OJ 268】Missing Number

    题目链接:https://leetcode.com/problems/missing-number/ 题目:Given an array containing n distinct numbers t ...

  10. svn代码回滚命令【转】

    本文转载自:http://www.cnblogs.com/jndream/archive/2012/03/20/2407955.html 取消对代码的修改分为两种情况:   第一种情况:改动没有被提交 ...