C语言指针和数组】的更多相关文章

C语言指针和数组知识总结(上) 一.指针的基础 1.C语言中,变量的值能够通过指针来改变,打印指针的语句符号可以是:  %08x 2.指针的本质 指针的本质就是变量,那么既然是变量,那么一定会分配地址.只不过指针里面保存的是地址. 3.传递地址和传递值的区别 函数传参数只是一个赋值/拷贝的作用,所以在函数值传递和地址传递有如下区别: 值传递不能改变函数体外部的变量,地址传递可以改变函数体外部的变量. 4.那么什么场合需要用到地址传递呢? 注意两点:  第一个是实现对函数体外部的变量进行修改 第二…
C语言指针与数组 数组的下标应该从0还是1开始? 我提议的妥协方案是0.5,可惜他们未予认真考虑便一口回绝    -- Stan Kelly-Bootle   1. 数组并非指针 为什么很多人会认为指针和数组始终应该可以互换的呢? 因为对数组的引用总是可以写成对指针的引用,而且确实存在一种指针和数组的定义完全相同的上下文环境, 不幸的是,这只是数组的一种极为普通的用法,并非所用情况下都是如此.   2. 什么是声明,什么是定义 C语言中对象必须有且只有一个定义,但它可以有多个extern声明.…
部分摘自<C语言深度解剖> 1.定义为数组,声明为指针 在文件1中定义: char a[100]; 在文件2中声明: extern char *a; //这样是错误的 这里的extern告诉编译器a这个名字已经在别的文件中被定义了,下面的代码使用的a是在别的文件中定义的.编译器是按文件分别编译的,当a被声明为char* a时,编译器理所当然的认为a是一个指针变量,在32位系统下占用4个byte,这4个byte存放的是地址,地址指向的空间存储的是char类型数据. 程序会返回SIGSEGV. 2…
一.用指针遍历数组元素 1.最普通的遍历方式是用数组下标来遍历元素 1 // 定义一个int类型的数组 2 int a[4] = {1, 2, 3, 4}; 3 4 int i; 5 for (i = 0; i < 4; i++) { 6 printf("a[%d] = %d \n", i, a[i]); 7 } 输出结果: 2.接下来我们用指针来遍历数组元素 先定义一个指针,指向数组的第一个元素 // 定义一个int类型的数组 int a[4] = {1, 2, 3, 4};…
指针:说简单点就是一个地址.例如int *p,p是个变量,里面放的是地址0x0000,同理,每一个指针,不管什么类型,都是地址,也就是空间都是4个字节(32位机). 以此类推,指针也有指向它的指针int **f,f是一个变量,它指向的是一个指针,f里面放的也是一个地址.也是4个字节. 而且记得放在=号的左右两边是不一样的表示.*p放在右边表示这个值,放在左边表示放这个值的那块空间. 永远记住,只有这个表达式可以表示空间的时候,才能放到左边. 例如说结构EX,typedef struct Node…
#include <stdio.h> int main() { /********************************************* * * 指针和数组: * 定义数组:数组名就是数组第一个元素的地址 * int ages[5]; * int *p; * p = ages; * 访问数组元素的方法: * 1.数组名[下标] ages[i] * 2.指针变量名[下标] p[i] * 3.*(p + i) * * 指针变量+1,地址值究竟加多少,取决于指针的类型 * int…
关键概念: 1.多个不同类型的指针可以对应同一个地址: 2.(&p)则是这样一种运算,返回一个指针,该指针的值是当时声明p 时开辟的地址,指针的类型是p的类型对应的指针类型: 3.(*p)操作是这样一种运算,获取指针p的值(变量的地址)找到对应的变量的值-----返回以(p 的值作为地址)的那个空间的值.但是如果这个变量本身就是一个地址,那么(*p)获取的值也是一个指针: 4.在数组中,指针的&,*运算符比较特殊,与普通变量的指针并不相同: 5.数组名不是一个该数组的指针: 一维数组 #i…
一.数组指针: 数组指针就是一个指针,只不过它指向的是一个数组.可以通过如下方式来定义 typedef int Array[5]; //数组类型 Array* m;      //数组定义 还有一种更为简洁的写法: int (*m)[10]; 二.指针数组: 所谓的指针数组就是一个数组,只不过数组元素是指针,可以通过如下方式来定义 int* m[10]; 三.数组指针的实例 #include <stdio.h> int main() { int a[5] = {1,2,3,4,5}; type…
指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而是变量的地址.如上代码,指针p中保存的是整型变量i的地址信息. 接下来看如何定义一个指针,既然指针也是一个变量,那么它的定义也和其它变量一样定义:如:int p:是间接寻址或间接引用运算符.上例中我们还看到了一个特别的运算符&,它是一个取地址运算符(在其他合适场合&也是按位运算运算符,&…
原书很多已经写的很清楚很精炼了,我也无谓做无意义的搬运,仅把一些基础和一些我自己以前容易搞混的地方写一下. 1. 意义: 指针: 指针也是一种类型,长度为4字节,其存放的内容只能是一个地址(4字节). 比如 char* ptr; ptr指向一个地址,而这个地址理想的情况下存放着一个char型数据,特殊情况下也可能会指向NULL,甚至变成野指针. 数组: 数组代表的是一段连续的内存地址,而并非指针那样代表的只是一个地址. 一般数组会有名字,比如 ] ; 即把一段长度为100个sizeof(char…