c18---数组和指针
//
// main.c
// day09 #include <stdio.h> int main(int argc, const char * argv[]) { int num = ;
int *numP = #
num = ;
*numP = ;
// num == *numP
printf("%i\n", num);//
printf("%i\n", *numP);// int ages[] = {, , };
// 数组名保存的是数组的地址, 数组的地址就是首元素的地址
printf("ages = %p\n", ages);//0xff4c
printf("&ages[0] = %p\n", &ages[]);//0xff4c // 指针是专门用于保存地址
// 数据类型 *变量名称;
// 由于数组的首元素的地址就是数组的地址, 所以定义一个指针指向数组其实就是定义一个指针指向数组的首元素, 所以数组的首元素是什么类型, 那么指向数组的指针就是什么类型
int *p = &ages[];
int *p = ages;// 数组名也是地址类型int*,数组的首元素是什么类型那么数组指针p就是什么类型
printf("p = %p\n", p);//0xff4c
printf("&ages[0] = %p\n", &ages[]);//0xff4c // 如何利用指针操作数组
int ages[] = {, , }; ages[] = ;
printf("ages[0] = %i\n", ages[]); int *p = ages; // int *p = &ages[0]; &ages[0] == ages
printf("p = %p\n", p);////0xff4c
printf("ages = %p\n", ages); //0xff4c, p == ages; // 以为p指针中存储的值和ages中存储的值相同, 所以以前用ages的地方都可以使用p来替代
p[] = ;
printf("ages[0] = %i\n", p[]);// for (int i = ; i < ; i++) {
printf("p%i] = %i\n", i, p[i]);//889,3,5,二位数字好像不行
} int ages2[][] = {{, , },{,,}};
int *p2 = ages2;
for(int i=;i<=;i++){
printf("%i", p2++);//1,3,5,2,4,6,一维数组二维数组存储空间是连续的。
} int ages[] = {, , }; //ages占用12个字节,
int *p;
p = ages; // int *p = &ages[0];
printf("ages[0] = %i\n", ages[]);//
printf("*p = %i\n", *p);// printf("p = %p\n", p);//0xff4c
// p = &ages[1];
// 指针+1, 并不是真实的+1, 而是+4不是+8,
// 指针类型的两个用途: \
第一个用途, 取值的时候, 会根据指针类型所占用的字节去取出对应字节的数据 \
第二个用途, 用于做加法运算, 指针+, 其实是加上指针类型所占用的长度 , 如果当前指针类型是int, 那么+1本质上是加上4个字节
p = p + ;
printf("p + 1 = %p\n", p);//0xff50
printf("*p = %i\n", *p);//3 // p = &ages[2];
p = p + ;
printf("p + 1 = %p\n", p);//0xff54
printf("*p = %i\n", *p);// int a = ;
a = a + ;
printf("a = %i\n", a); // int num = ; //num占用4个字节
int *numP = # //numP占用8个字节
printf("num = %i\n", num); //10
// *numP 代表访问numP指向的那块内存空间
printf("*numP = %i\n", *numP); // char c = 'a';
char *cp = &c;
printf("cp = %p\n", cp);//0xffab
cp = cp + ;
printf("cp + 1 = %p\n", cp);//0xffac
cp = cp + ;
printf("cp + 1 = %p\n", cp);//0xffad,字符只占用一个字节 int ages[] = {, , };
int *p;
p = ages; printf("ages[0] = %i\n", *(p + )); //
printf("ages[1] = %i\n", *(p + )); //3, p = p + 1; *p;
printf("ages[2] = %i\n", *(p + )); // for (int i = ; i < ; i++) {
// 指针+1, 是加上指针类型所占用的长度
printf("ages[%i] = %i\n", i, *(p + i)); //1,3,5
} /*
只要一个指针指向了数组, 那么访问数组就有3种方式:
1. : ages[0];
2. : p[0];
3. : *(p + 0);
*/ printf("ages[0] = %i\n", [p]);//
return ;
}
c18---数组和指针的更多相关文章
- 把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另 ...
- C语言核心之数组和指针详解
指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...
- 《征服 C 指针》摘录3:数组 与 指针
一.数组 和 指针 的微妙关系 数组 是指将固定个数.相同类型的变量排列起来的对象. 正如之前说明的那样,给指针加 N,指针前进“当前指针指向的变量类型的长度 X N”. 因此,给指向数组的某个元素的 ...
- C指针-数组和指针的归一
int bArr[] = {1,2,3}; int *iarr = bArr; *iarr = 6; printf("%d\n",*iarr); printf("%d\n ...
- 《C专家编程》第四章——令人震惊的事实:数组和指针并不相同
数组和指针是C语言里相当重要的两部分内容,也是新手程序员最容易搞混的两个地方,本章我们锁定指针与数组,探讨它们的异同点. 首先来看指针与数组在声明上的区别: int a[10]; int *p; 很明 ...
- (C语言)数组与指针的区别
以前常常听过这种说法,说数组和指针这两者比较像,但是不能混淆,可是一直没能理解.刚刚在李云的<专业嵌入式软件开发>中,看了讲述数组与指针区别的一章,似乎有所领悟.本着知乎上看到的这张图,我 ...
- C语言教学--二维数组和指针的理解
对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...
- 【C语言学习】《C Primer Plus》第10章 数组和指针
学习总结 1.数组初始化方式: int a[]={1,2,3} int a[SIZE]={1,2,3} //SIZE是宏定义,数组初始化个数不能大于SIZE,否则报错:当个数小 //SIZE,自动补0 ...
- C语言学习004:数组与指针
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
- C语言--指向多维数组的指针和指针数组
#include <stdio.h> //void show(char *p[]); ]); int main(){ ][]={","abc","x ...
随机推荐
- [转载]Android平台第三方应用分享到微信开发
一.申请APPID 微信公共平台和微博分享一样,也需要申请一个ID,来作为调起微信.分享到微信的唯一标识. 申请微信APPID可以到微信平台http://open.weixin.qq.com/app/ ...
- sql 系统函数
--查看表备注SELECT a.column_id AS No, a.name AS 列名, isnull(g.[value],'-') AS 说明 FROM sys.columns a left j ...
- Laravel5.1学习笔记4 控制器
HTTP 控制器 简介 基础控制器 控制器中间件 RESTful 资源控制器 隐式控制器 依赖注入和控制器 路由缓存 简介 除了在单一的 routes.php 文件中定义所有的请求处理逻辑之外,你可能 ...
- 从Hive1.0升级到Hive2.0(删除hive1.x中的元数据, 并不是数据迁移)
软件环境: linux系统: CentOS6.7 Hadoop版本: 2.6.5 zookeeper版本: 3.4.8 主机配置: 一共m1, m2, m3这五部机, 每部主机的用户名都为centos ...
- jQuery中容易让人困惑的东西
前言:jqueryt很灵活,太灵活了,可以说是他一个优点,也是他一个缺点,达到一种效果,十个人也许会用十种不同的方法来实现这个过程,结果一样,过程不一样,这到底是好,还是坏呢. 一,什么是jquery ...
- SGU495Kids and Prizes 数学期望
题意: 有n个奖品,m个人排队来选礼物,对于每个人,他打开的盒子,可能有礼物,也有可能已经被之前的人取走了,然后把盒子放回原处.为最后m个人取走礼物的期望. 题解: 本道题与之前的一些期望 DP 题目 ...
- atcoder.keyence2019.contest E-Connecting Cities
真是道好题啊,当时怎么想都没想出来... 传送门 简述题意: 有n个点,每个点有一个权值Ai,连接i,j两个点的代价是 |i−j|×D+Ai+Aj 其中D是给定的常数,问把n个点联通的最小代价 1≤ ...
- TensorFlow学习笔记----例子(2)
使用TensorFlow中的梯度下降法构建线性学习模型的使用示例:(来源:https://morvanzhou.github.io/tutorials/machine-learning/tensorf ...
- Idea 方法注释
Idea 方法注释 http://blog.csdn.net/u014044812/article/details/76577479 http://blog.csdn.net/leixingbang1 ...
- Problem 17
Problem 17 If the numbers 1 to 5 are written out in words: one, two, three, four, five, then there a ...