文档章节

关于指向数组的指针

01010101010101010101
 01010101010101010101
发布于 2014/01/03 21:28
字数 648
阅读 18
收藏 0

1:指向数组的指针
        1)指向数数组的指针:是指向数组地址的指针。
        2)赋值:指向数组的指针=&数组名
        3)取值时:(指向数组的指针)[i]
实例

#include<stdio.h>
#include<string.h>

int main()
{
        char caData[]="0123456789";
        char (*pa)[10+1];//定义了一个指向数组的指针
        char *p;//指向一个指向数组元组的指针
        int i;

        p = caData;
        for(; *p !='\0' ;p++)
        {
                fprintf(stderr," %c-",*p);
        }
        fprintf(stderr,"\n----------------------\n");
        pa = &caData;//给指向数组的指针赋值---------------------------KEY
        for(i = 0;i<10;i++)
        {
                fprintf(stderr," %c-",(*pa)[i]);//取数的关键(*pa)
        }

        return 0;
}
=================================================================================================
后补资料:
关于char (*p)[] 和char p[]的问题(转) (2006-12-26 21:56)
char (*p)[]是定义一个指向char型数组的指针.
char p[]是定义一个数组,p也是指针,只不过是常量.对吧?
#include <stdio.h>
int main()
{
        char (*p)[10] ;
        char a[10];
        p=a;
}
为什么提示
[root@localhost ~]# cc test.c
test.c: 在函数 ‘main’ 中:
test.c:6: 警告:从不兼容的指针类型赋值呢?

你把p=a 改成 p=&a就可以了。
这是c语言迷惑人的地方。很多书都告诉大家数组名就是数组的地址,但其实它是的数组第一个元素的地址,类型是char *。而&a 表示的才是数组的地址,类型是char (*)[10]。由于数组的地址在值上面和数组第一个元素地址的值是相同的,所以大家平时就认为&a和a是一样的,产生了误会。
所以,p=a的警告在于你把一个char型的地址赋给了一个char (*)[10]的指针。当然,这样做的结果没错,不过多了个警告。 //在vc7中试了一下,cpp文件连编译都过不了,c文件可以过。明显c++更严格,更妥当。by imjacob
 
 
--------------------------------------------------------------------------------
 
指向数组的指针 和 指针数组是不一样的
指向数组的指针char (*p)[10]表示p指的是一个数组,//?应该是一个指针。imjacob
p+1与p的差距是sizeof(char [10]),是移动指到另一个数组,这里sizeof(p)在32位机器上应该是4,指针的长度是4。
指针数组char *p[10],表示的是一个数组,数组中每个元素都是指针,这里sizeof(p)在32位机器上应该是40,=10 * sizeof(char*),这儿是数组的长度,而不是指针的长度,也说明他是个数组,跟指向指针的指针(char **p)也是不一样的
还不明白自己去看书了,不回复了

© 著作权归作者所有

共有 人打赏支持
01010101010101010101
粉丝 23
博文 93
码字总数 68915
作品 0
长宁
高级程序员
私信 提问
C/C++ 指针小结——指针的概念和如何使用指针

一、理解指针 当我们声明一个变量时,系统会在内存中分配适当的存储空间,以保存该变量的值,由于每一个字节都有唯一的地址编号,因而内存存储空间都有自己的地址编号。又由于内存地址只是编...

刘太刚
2018/07/01
0
0
解读 C 语言中的指针

我想对很多学习C语言的新手来说,指针无疑是一个难点。但是,我觉得指针也是C语言特别重要的一个特性。也许,你在除了C和C++以外的编程语言中,很少看到指针。而C++中,也多用引用,而非指针...

数通畅联
2016/07/21
21
0
C语言指针讲解(二)

谨记 听......黎明在远方呼唤清晨,别在等,人的一生必将经历许多磨难,所以在人生前行的道路上,我们不可对每件轻微的伤害而敏感,在生活的磨难面前,精神上的坚强和无动于衷是我们抵抗罪恶...

长风留言
2017/11/13
0
0
C语言精要总结-指针系列(二)

此文为指针系列第二篇: C语言精要总结-指针系列(一) C语言精要总结-指针系列(二) 指针运算 前面提到过指针的解引用运算,除此之外,指针还能进行部分算数运算、关系运算 指针能进行的有...

吕亚辉
2017/06/30
0
0
12月13号指针数组笔记

指针进行运算时,要确保指针说指向的内存区域一致 比如 指向不同数组的两个指针,进行运算得到的结果没有意义. 数组指针: 将数组名作为参数传递给函数时,实际上是传递的数组的首地址. 函数的形...

getchar_
2017/12/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java springcloud B2B2C o2o多用户商城 springcloud架构-docker-feign配置(五)

简介 上一节我们讨论了怎么用feign声明式调用cloud的生产者,这节我们讨论一下feign配置,通过编写配置类,我们可以自定义feign的日志级别,日志扫描目录,可以通过feign调用服务在eureka上的...

sccspuercode
22分钟前
2
0
长连接的心跳及重连设计

前言 说道“心跳”这个词大家都不陌生,当然不是指男女之间的心跳,而是和长连接相关的。 顾名思义就是证明是否还活着的依据。 什么场景下需要心跳呢? 目前我们接触到的大多是一些基于长连接...

crossoverJie
22分钟前
3
0
OSChina 周三乱弹 —— 风扇写着先生请自爱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @蚂蚁哈哈哈 :分享陈奕迅的单曲《落花流水》 《落花流水》- 陈奕迅 手机党少年们想听歌,请使劲儿戳(这里) @车谷 :我发现每天上班都好困 ...

小小编辑
今天
803
13
centos7重置密码、单用户模式、救援模式、ls命令、chmod命令

在工作当中如果我们错误的配置了文件使服务器不能正常启动或者忘记密码不能登录系统,如何解决这些问题呢?重装系统是可以实现的,但是往往不能轻易重装系统的,下面用忘记密码作为例子讲解如...

李超小牛子
今天
4
0
Python如何开发桌面应用程序?Python基础教程,第十三讲,图形界面

当使用桌面应用程序的时候,有没有那么一瞬间,想学习一下桌面应用程序开发?行业内专业的桌面应用程序开发一般是C++,C#来做,Java开发的也有,但是比较少。本节课会介绍Python的GUI(图形用...

程序员补给栈
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部