c数组和指针的理解
#include<stdio.h> int main(void)
{
int a[]={,,,,};
int *p = (int*)(&a + );
printf("%d,%d\n",*a+,*(p-)); // int (*ptr1)[] = &a; √
// int (*ptr2)[] = a; ×
// int (*ptr1)[] = &a; ×
// int (*ptr2)[] = a; ×
} //2,5
数组名只可以作为右值!
当我们定义一个数组时候,编译器根据指定的元素个数和类型确定分配内存大小。并把这一块地址的名称赋为数组名称。
a[0]、a[1]......为数组元素,但并非元素名称!
指针,32系统总是为4字节(0x11111111)只能存放一个地址单元的值,所以总是存放的首地址。
但是访问时候需要根据类型大小来移动指针。
数组名:值等同于数组“首元素”的“首地址”(数组首元素的指针)
P + 1
char*移动一个字节,int*移动4个字节!数组指针移动一个数组元素类型长度!二级指针移动一个指针长度(4)!
&a:表示数组指针(取数组变量a的指针)
对数组的访问,总是转换为对指针的访问!
二维数组
int b[][] = {{,},{,}};
// int *p2 = b; ×
// int (*p5)[2] = b; √
// int **p = b; ×
二维数组名称,指向首元素b[0]的指针,为数组指针【一级指针】!
// int *p3 = b[0]; √
// int (*p4)[2][2] = &b; √
二维数组所有元素的访问(一级指针):
#include<stdio.h>
int main()
{
int iArray[][] = {{,,},{,,}};
int *pArray = NULL; pArray = (int*)iArray; printf("array[0][0] = %d\n", *pArray);
printf("array[1][2] = %d\n", *(pArray + ));
printf("array[1][2] = %d\n", *(pArray + * + )); /*数组本身在地址空间中就是连续排列的*/
printf("array[1][2] = %d\n", *((int *)(*((int (*)[])pArray + )) + ));
return ;
}
二维数组所有元素的访问(数组指针):
#include<stdio.h> int main()
{
int iArray[][] = {{,,},{,,}};
int (*pArray)[] = NULL; pArray = iArray; printf("array[0][0] = %d\n", **pArray);
printf("array[1][2] = %d\n", *(*(pArray+)+));
return ;
}
int main()
{
int iArray[][] = {{,,},{,,}}; int (*pArray)[] = NULL; pArray = iArray; printf("array[0][0] = %d\n", pArray[][]);
printf("array[1][2] = %d\n", pArray[][]);
return ;
}
二级指针
为指向指针的指针,指向的值必须是指针。
int main()
{
int iArray[][] = {{,,},{,,}};
int *ipArray[] = {iArray[], iArray[]};
int **pArray = NULL; pArray = ipArray; printf("array[0][0] = %d\n", pArray[][]);
printf("array[1][2] = %d\n", pArray[][]); return ;
}
c数组和指针的理解的更多相关文章
- C语言教学--二维数组和指针的理解
对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...
- C语言数组和指针的理解_在取地址运算上的操作_指针加减操作_a 和&a 的区别
1.一个实例+理论分析 在了解数组和指针的访问方式前提下,下面再看这个例子: main() { int a[5]={1,2,3,4,5}; int *ptr=(int *)(&a+1); pr ...
- 关于c语言二维数组与指针的个人理解及处理办法。
相信大家在学习C语言时,对一维数组和指针的理解应该是自信的,但是,我在学习过程中,看到网上一些博文,发现即便是参加工作的一些专业编程人员,突然碰到二维数组和指针的问题时,也可能会遇到难以处理的诡异问题 ...
- 深入理解C语言中的指针与数组之指针篇
转载于http://blog.csdn.net/hinyunsin/article/details/6662851 前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...
- 对于C语言中数组名是指针的理解
我们都知道,c语言中数组名是一个指针,比如下面这段代码 #include<iostream>using namespace std;int main(){ int a[4]={1,2,3, ...
- 深入理解C语言中的指针与数组之指针篇(转载)
前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情 ...
- (C初学) 对数组与指针的一些浅显的理解
因为课堂上没听懂,又看不懂教科书(<C语言程序设计教程>第3版 谭浩强,张基温编著)上晦涩的表达方式,昨天晚上特意拿<C语言入门经典>这本书自己研究了一晚的数组与指针. 先来一 ...
- 深入理解C/C++数组和指针
C语言中数组和指针是一种很特别的关系,首先本质上肯定是不同的,本文从各个角度论述数组和指针. 一.数组与指针的关系数组和指针是两种不同的类型,数组具有确定数量的元素,而指针只是一个标量值.数组可以在某 ...
- 程序员之--C语言细节13(二维数组和指针,&*a[i][0]的理解,数组1[e]和e[1]非常可能你没见过)
主要内容:二维数组和指针.&*a[i][0]的理解.数组1[e]和e[1] #include <stdio.h> #define NUM_ROWS 10 #define NUM_C ...
随机推荐
- HDU 4614-Vases and Flowers(线段树区间更新)
题意: n个花瓶(0-n-1) 现有两个操作, 操作1 给a,f 从a位置开始向后连续插f个花(一个花瓶插一个)若当前花瓶有花则向后找,直到n-1位置如果还有多余的花则丢掉求查完花的第一和最后一个位置 ...
- HDU 3567 Eight II BFS预处理
题意:就是八数码问题,给你开始的串和结束的串,问你从开始到结束的最短且最小的变换序列是什么 分析:我们可以预处理打表,这里的这个题可以和HDU1430魔板那个题采取一样的做法 预处理打表,因为八数码问 ...
- 设计模式_Interpreter_解释器模式
形象例子: 俺有一个<泡MM真经>,上面有各种泡MM的攻略,比如说去吃西餐的步骤.去看电影的方法等等,跟MM约会时,只要做一个Interpreter,照着上面的脚本执行就可以了.解释器模式 ...
- Pyhton 一行代码求Fibonacci第N项
递归定义很简单,效率当然很低下,且极易超出栈空间大小. 这样做纯粹是为了体现python的语言表现力而已, 并没有任何实际意义. def fib(x): return fib(x-1) + fib(x ...
- 2016CCPC 中南地区邀请赛 A 矩阵快速幂
A A^n=A^(n%2016)%7; #include <iostream> #include <cstdio> #include <cstring> #incl ...
- 利用weka和clementine数据挖掘举例
1.数据概述 本报告中采用的数据集来自于UCI经典数据集Adult,最初来源是由1994年Barry Becker的统计数据集,该数据集本来最初的主要任务是根据数据集中的相关属性预测某个人的年收入是大 ...
- leetcode@ [91] Decode Ways (Dynamic Programming)
https://leetcode.com/problems/decode-ways/ A message containing letters from A-Z is being encoded to ...
- git http方式时保存密码
一直使用ssh方式,但是git@osc的ssh只能pull,不能push - -||| htts方式保存密码老是忘记,每次提交代码都要输入密码烦死了.找到文章备忘: 转自:http://git ...
- SQLServer2005数据导入Mysql到详细教程
如果转载请注明转载地址,谢谢. SQL SERVER数据导入MYSQL目录 1.Navicat for MySQL 版本10.0.9 2.创建目标数据库 3.创建正确的SQL SERVER数据库ODB ...
- IPO
Initial Public Offerings,简称IPO,首次公开募股(Initial Public Offerings,简称IPO):是指一家企业或公司 [1] (股份有限公司)第一次将它的股份 ...