C指针与数组
- 通过指针遍历数组的小把戏
#include<stdio.h>
#include<stdlib.h>
#include<Windows.h>
void main()
{
int a[] = {,,,,,,,,,};
for (int *p = a; p <= a + ; p++)
{
printf("值是%d,地址是%p\n",*p,p);
}
getchar();
}

- a代表指向整型数组首元素地址的指针,被称作指向整型类型的常量指针,原因见下属上机实验结果,而p相对而言就是变量指针,可以把数组a[10]的首地址a赋值给p

左值,处于赋值号左边可以被赋值的变量,实验结果是提示左值不可赋值
- 也可以巧妙安排借助指针改变地址中存放的值
void main()
{
int a[] = { , , , , , , , , , };
time_t st;
srand((unsigned int)time(&st));
//利用指针替换数组a
int *p = a;
for (int i = ; i < ; i++)
{
*p = rand()%;//指针当前位置的元素改为以时间为种子生成的随机数
p++;//指针向前推进,遍历到数组的下一个元素
}
for (int *p = a; p < a + ;p++)
{
printf("当前元素是%d,地址是:%p\n",*p,p);
}
system("pause");
}
输出结果:

- 也可以利用指针运算性质,不断的推进地址,达到访问地址中存放的值的效果
void main()
{
time_t ts;//声明了一个时间
int a[] = {,,,,,,,,,};
srand((unsigned int)time(&ts));//以时间为种子生成随机数,如果省略此行代码,则下一行代码生成的总是一个数
printf("此刻,生成的随机数是%d\n", rand() % );//生成0-99----对100取余,肯定数字小于100
int i = ;
int num[];
for (int *p = num; p < num + ;p++)
{
num[i] = rand() % ;
i++;
}
int *q = num;//这里用到了num是数组首元素地址的特性q+i=&num[i] *(q+i)=num[i]
for (int i = ; i < ; i++)
{
printf("q[i]=%d, *(q+i)=%d\n",q[i],*(q+i));
}
getchar();
}

- 求随机数组的最大值及其下标
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
time_t st;
srand((unsigned int)time(&st));
int crazyarray[];
for (int i = ; i < ; i++)
{
crazyarray[i] = rand() % ;
}
int *p = crazyarray;
int max = *p;
int index = ;
for (int *q = crazyarray; q < crazyarray + ; q++)
{
printf("%d\n", *q);
if (*q>max)
{
max = *q;
index= q - p;
}
}
printf("最大值是%d,下标是%d\n",max,index);
getchar();
}
输出结果:

C指针与数组的更多相关文章
- C与指针(结构体指针,函数指针,数组指针,指针数组)定义与使用
类型 普通指针 指针数组(非指针类型) 数组指针 结构体指针 函数指针 二重指针 定义方式 int *p; int *p[5]; int (*p)[5]; int a[3][5]; struct{.. ...
- 11-C语言指针&一维数组&字符串
一.用指针遍历数组元素 1.最普通的遍历方式是用数组下标来遍历元素 1 // 定义一个int类型的数组 2 int a[4] = {1, 2, 3, 4}; 3 4 int i; 5 for (i = ...
- 指针与数组的区别 —— 《C语言深度剖析》读书心得
原书很多已经写的很清楚很精炼了,我也无谓做无意义的搬运,仅把一些基础和一些我自己以前容易搞混的地方写一下. 1. 意义: 指针: 指针也是一种类型,长度为4字节,其存放的内容只能是一个地址(4字节). ...
- 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, const 对象的引用
[源码下载] 不可或缺 Windows Native (18) - C++: this 指针, 对象数组, 对象和指针, const 对象, const 指针和指向 const 对象的指针, con ...
- 指针 与 数组 以及 a 与 &a的区别
指针 与数组 并没有什么关系, 指针就是指针,指针变量在32位系统下,永远占4个byte,其值为某一个内存的地址,指针可以指向任何地方,但是不是任何地方你都能通过这个指针变量访问到; 数组 ...
- c/c++ 函数指针 指针函数 数组的引用 指针数组 数组指针
1.指针数组数组指针 引用数组 数组的引用 int *a[10] 指针数组 每一个元素都是一个指针 Int (*a)[10] 数组指针 P指向一个含有10个元素的数组 Int (&a)[10] ...
- 深入理解C语言中的指针与数组之指针篇
转载于http://blog.csdn.net/hinyunsin/article/details/6662851 前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...
- 转: 浅谈C/C++中的指针和数组(二)
转自:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242419.html 浅谈C/C++中的指针和数组(二) 前面已经讨论了指针和数组 ...
- 转:浅谈C/C++中的指针和数组(一)
再次读的时候实践了一下代码,结果和原文不一致 error C2372: 'p' : redefinition; different types of indirection 不同类型的间接寻址 /// ...
- C语言指针与数组的定义与声明易错分析
部分摘自<C语言深度解剖> 1.定义为数组,声明为指针 在文件1中定义: char a[100]; 在文件2中声明: extern char *a; //这样是错误的 这里的extern告 ...
随机推荐
- 关于c++模板非类型参数中指针和引用类型必须为全局或者静态变量的问题
之前在学习c++模板的时候,一直没留意到在非类型参数中对指针和引用有着一些限制,今早在复学模板的时候才注意到书上标明,指针和引用作为模板的非类型参数传递时必须要求是全局或者静态变量.其实不难想到,模板 ...
- java. util. concurrent. atomic
一.原子更新基本类型 AtomicInteger AtomicBoolean AtomicLong 二.原子更新数组 AtomicIntegerArray AtomicLongArray Atomic ...
- Spring框架ioc概括
什么是Spring且能做什么 Spring是一个开源框架,它由Rod Johnson创建.它是为了解决企业应用开发的复杂性而创建的. Spring使用基本的JavaBean来完成以前只可能由EJB完成 ...
- Mongo DB分片
分片,指的就是把数据拆分,将其分散到不同机器上的过程.MongoDB支持自动分片,对应用而言,好像始终和一个单机的服务器交互一样. 分片和复制复制是让多台服务器拥有相同的数据副本,而分片是每个分片都拥 ...
- Aso.Net Core 的配置系统Configuration--转
转自https://www.cnblogs.com/Lueng/p/11963819.html 目录 Aso.Net Core 的配置系统Configuration 01.Json文件的弱类型方式读取 ...
- Core使用SAP Web Service
.Net Core在使用SAP的Web Service会遭遇到一些错误,貌似目前并不支持SAP中的Web Service,我们需要曲线实现下调用过程: 经测试,不再需要Framework项目中转,Sy ...
- We Need More Bosses CodeForces - 1000E (无向图缩点)
大意: 给定无向连通图, 定义两个点$s,t$个价值为切断一条边可以使$s,t$不连通的边数. 求最大价值. 显然只有桥会产生贡献. 先对边双连通分量缩点建树, 然后求直径即为答案. #include ...
- Codeforces Round #557 Div. 1 based on Forethought Future Cup - Final Round
A:开场就读错题.读对了之后也没啥好说的. #include<bits/stdc++.h> using namespace std; #define ll long long #defin ...
- 怎样理解this
JavaScript里的this, Python里的self, 其实都是一个东西, 它的存在跟构造函数 / 类这种是分不开的, 当然, 也可以在其他场合下使用, 他的意义很多, 但最共通的一个特点是: ...
- SQL 删除重复记录,并保留其中一条
--查找表中多余的重复记录select * from code_xz where code in (select code from code_xz group by code having coun ...