1、指针与数组

1)指针与一维数组

i.数组指针(指向数组元素的指针)

类型  *指针变量名;

指针定义完成后要初始化(不想让指向任何内容,=0,=NULL)

int a[10];

int *p = &a[0];   // &a[0] == a

int *p1 = a;

ii.用数组的指针访问数组元素

偏移:指针变量的偏移

p1 = p1+1;    //向下偏移1个一个数组元素

p1++;   //p1中存放的还是地址

....

如果用指针访问第i个元素 p1+i

取出pi指向的元素的值:*(p1+i);    ==  a[i]元素的值

具体地址值计算:p1+sizeof(数组的类型)

指针数组(数组中的每个元素都是指针)

数组中的每一个元素还是一个指针

int a[3][3]={11,2,3,4,5,6,7,8,9};

a[0]  //行地址

a[1]

a[2]

//pa就是一个指针数组

int *pa[3]={a[0],a[1],a[2]};

2)指针与二维数组

数组指针(指向数组元素的指针)

特定的格式:

int (*p3)[3]; //定义一个指向二维数组的指针,而且二维数组的第二维长度要是3

int b[3][3];

p3 = b;

int b1[2][3];

p3 = b1;

int b2[2][2];

p3 = b2;  //编译器给警告

用指针对二维数组的遍历

int a[3][3] ={1,3,3,2,3,4,5,6,6};

int (*p1)[3] = a;

0    1   2

a[0]+0 a[0]+1 a[0]+2

a[0]     1    3   3

a[1]     2    3   4

a[2]     5    6   6

一维数组中: *(p1+0)  = a[0]的值

*(a[0]+1)

*(*(p1+0)+1)   == a[0][0] 元素的值

求a[i][j] = *(*(p1+i)+j)

指针数组(数组中的每个元素都是指针)

char *name[3][5]={"aaa","bbbb","cccc"};

2、字符数组与字符串指针

char 数组名[10];

c语言中没有字符串变量,字符串都是通过数组来存储的

char a[10]="xxxx";  //数组长度10,字符串的长度5(sizeof),strlen值4

//字符串指针

char *str ="azaaa";

字符数组和字符串指针的区别

1)字符数组,由数组元素组成,char c[5];c[5]='b'; 存到栈区

2)字符串指针他只存放了字符串的首地址,存放到常量区

3)字符串指针来说

char *s;

s = "hello";

char ch[5];

ch[5]="aa";  //错误的

3、补加的输入输出函数

scanf   gets(不安全的)   puts

fgets(指针,n,stdin); //安全的,

//从键盘接收字符串,放到指针指向的地址,如果字符串长度大于了n,这个时候只接收的字符串长度是:n-1,最后一个自动设置为'\0'

fputs(指针,stdout);

//输出现实

4、const修饰变量和指针

int const *p  //值不能变,指向可变

const int *p  //同上

int * const p;//指向不可变,值可变

const int * const p;  //值和指向都不能变

5、动态内存分配

内存的分区:

代码区  编译产生的二进制代码

数据区  程序需要交换的数据

常量区  常量   字符串常量

堆区    程序运行的过程中动态申请的内存

栈区    局部变量存储

动态的内存申请:

程序运行的过程中向堆区动态申请一块内存区域

void* malloc(n)  //从内存的堆区中申请n个字节内存

void* 空指针类型

存储整数

//申请了一个4个字节长度的内存区域,首地址放到了p中

int *p =(int *)malloc(4);

char *p1 =(char *)malloc(4);

float *p2 = (float *)malloc(4);

向内存单元中存储内容:

*p = 10;

转载于:https://www.cnblogs.com/houzhitong/p/4499824.html

IOS笔记-C语言中的指针与数组相关推荐

  1. c语言中数组的概念及作用,详解C语言中的指针与数组的定义与使用

    指针的特点 他就是内存中的一个地址 指针本身运算 指针所指向的内容是可以操作的 操作系统是如何管理内存的 栈空间 4M~8m的大小 当进入函数的时候会进行压栈数据 堆空间 4g的大小 1g是操作系统 ...

  2. c语言中通过指针引用数组,C语言基础(二)

    指针引用数组 C语言规定:如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素. 引入指针变量后,就可以用两种方法来访问数组元素了.如果p的初值为&a[0],则: p+i和 ...

  3. 【软件开发底层知识修炼】二十七 C/C++中的指针与数组是不同的

    上几篇文章学习了ABI-应用程序二进制接口:[软件开发底层知识修炼]二十六 ABI-应用程序二进制接口 学习总结文章目录 本篇文章就指针与数组的联系与区别来学习学习 文章目录 1 疑问 2 指针与数组 ...

  4. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  5. c语言中程序偏离,C语言中的指针加减偏移量

    首先看一段程序: #include int main() { int a[5] = {1, 2, 3, 4, 5}; int* p = (int*)(&a + 1); printf(" ...

  6. c语言中指针的类型,学习C语言中的指针类型

    摘要:结合我院学生十年来参加全国计算机等级考试(C语言部分)情况,通过分析成绩分布与题型关系,我们发现指针方面的题型失分率最高.在此基础上结合教学实际,本文提出学习指针知识的方法和顺序过程,并将其应用 ...

  7. C语言中的指针有什么作用

    C语言中的指针的作用是:通过指针不仅可以对数据本身,还可以对存储数据的变量地址进行操作.指针就是内存地址,指针变量是用来存放内存地址的变量. 指针定义: 指针,是C语言中的一个重要概念及其特点,也是掌 ...

  8. 指针在c语言中的运用,怎么理解C语言中的指针,如何运用?

    恰好我之前写了一系列介绍 C 语言的文章,介绍了什么是指针,以及为什么要使用指针,下面摘录一部分,感兴趣的话,可以点我了解更多. 什么是 C语言指针? 不同的数据类型的主要区别在于占用的存储空间不同. ...

  9. 详解:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], p[0] 的含义

    解析:C语言中的指针和p, p+1, *(p+1), *P+1, p[0], &p[0] 每一种表达式的含义  一.先解决一个问题:什么是指针 指针就是存放地址的变量.很好,百度上就是这个答案 ...

最新文章

  1. Beam Search
  2. 洛谷P4216 [SCOI2015]情报传递(树剖+主席树)
  3. 据lovecherry的一步一步学Remoting序列文章学习.net Remoting日记(2)
  4. linux 用户进程结束后 malloc申请的内存会自动释放吗,进程退出后malloc的内存是否会被释放?
  5. java timestamp是什么类型_JAVA比较2个Timestamp类型的时间大小-由此引发的思考
  6. linux 添加path环境变量中,在Linux里设置环境变量PATH的方法是什?
  7. 让数据库操作变成非阻塞的
  8. 2018-10-16
  9. html5+css3第一次作业_在家写作业日记200字
  10. 无人车公司May Mobility种子轮融资1150万美元,宝马丰田联合领投
  11. vscode的IntelliCode扩展报错
  12. 主干网络系列(4) -ResNeXt: 批量残差网络-作用于深度神经网络的残差聚集变换
  13. 中孚计算机保密 卸载,智华计算机终端保密检查系统怎样卸载
  14. 集异璧(GEB)第一章WU谜题读后感
  15. pythonista安卓_Android平台有哪些软件类似于iOS上的JSbox、Pythonista和Thor?
  16. ps快捷键大全(表格汇总)
  17. 证券公司交易系统架构演进探析
  18. 一个因全局变量引发的故事!
  19. python语言是干什么的-python语言可以干什么
  20. Spring父子类同属性父类属性隐藏

热门文章

  1. 检测含有中文字符串的实际长度
  2. 【381天】我爱刷题系列140(2018.02.21)
  3. php 不等待返回的实现方法(异步调用)
  4. JqueryQrcode生成二维码不支持中文的解决办法
  5. 【知识积累】C#中结构体和类的区别
  6. Lua中的模块与module函数详解
  7. windows下将iso文件挂载到文件夹
  8. 转型中的知不知、能不能、愿不愿
  9. 真正的飞车-赛道狂飙:日出极限版
  10. 开发者推出可重用地址提案提升BCH性能