文档章节

关于指向数组的指针

01010101010101010101
 01010101010101010101
发布于 2014/01/03 21:28
字数 648
阅读 18
收藏 0
点赞 0
评论 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++ 指针小结——指针的概念和如何使用指针

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

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

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

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

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

长风留言
2017/11/13
0
0
12月13号指针数组笔记

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

getchar_
2017/12/13
0
0
函数指针和指针函数以及函数指针数组

问题:一个整型a,根据a的值执行相应的代码 我的回答是使用switch case 面试官说可以这样做,但是还有速度更快的办法,但是他没说是什么办法...只提到了一下指针阿数组什么地,没听清。 想请教...

墙头草
2011/10/18
0
0
Copy和mutableCopy实际使用差别分析

最近一直会遇到关于copy和mutableCopy相关的问题,之前在学习内存管理方面有大致的了解过,但是通过不断的了解发现存在特别多的疑惑点,所以趁着年前的时间将这方面的知识点总结总结。 1.类对...

李周
01/14
0
0
C Primer Plus 第10章 数组和指针 10.4 函数、数组和指针

假设您要编写一个对数组进行操作的函数,目的是要此函数返回数组内所有元素的和。假设marbles为这个int数组的名称。应该如何来调用这个函数? 一种合乎情理的猜测如下: totao = sum(marble...

idreamo
2016/07/28
33
0
c语言基础学习07_关于指针的复习

============================================================================= 指针变量之间赋值是需要兼容的。 例如: int a = int的地址 char b= char的地址 ------------------------......

黑泽明军
01/11
0
0
C/C++中二维数组和指针关系分析

在C/c++中,数组和指针有着密切的关系,有很多地方说数组就是指针式错误的一种说法。这两者是不同的数据结构。其实,在C/c++中没有所谓的二维数组,书面表达就是数组的数组。我猜想是为了表述...

长平狐
2013/12/25
86
0
嵌入式开发之C++基础学习笔记2--总结所有基础用法

1.关于全局变量和局部变量(global & local) #include <iostream> using namespace std; int a = 10; int avar = 10; int main() { int avar = 20; ::avar = 30; // 作用域运算符 cout << ......

吴锦涛
2012/12/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

python3.6用的外库遇到的问题

要用到wmi库 pip install wmi 装后不能用还要安装pywin32库。 要用到crypto加密模块安装pip instal pycrypto装后不能用。要安装pycryptodome。...

oisan_
14分钟前
0
0
select, poll, epoll I/O复用介绍

什么是I/O复用? 内核监视多个文件描述符(I/O文件句柄),一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知应用程序进行相应的读写操作。 I/O多路复用又被称为“事件驱动”(比如读写事...

xiaoxlm
15分钟前
0
0
【Spring 系列 给IOC容器添加组件的几种方式总结】

给Spring 注册Bean的几种方式总结。其中使用@Import注解是Spring Boot 完成自动配置的一个核心注解。 1、Spring 中给IOC容器添加组件的几种方式 在Spring的配置文件中,配置Bean(基于XML方式...

HansonReal
16分钟前
4
0
bootstrapTable语言包设置

###方法一引入不同的语言包 <script src="bootstrap-table-zh-CN.js"></script> ###方法二引入全语言包 <script src="bootstrap-table-locale-all.min.js"></script>//然后在初始化前设计默......

momo1987
17分钟前
0
0
Saltstack 常用命令

1、拷贝文件到客户端 # salt 'slaver.test.com' cp.get_file salt://apache.sls /tmp/cp.txt 2、拷贝目录到客户端 # salt 'slaver.test.com' cp.get_dir salt://test /tmp 3、显示存活的客户......

硅谷课堂
17分钟前
0
0
致初学者-如何学好Python这门编程语言?[图]

致初学者-如何学好Python这门编程语言?[图]: 对于很多Python3初学者,往往会面临以下问题:Python2和Python3我该学习哪一个?是否要安装Linux系统学习Python?Python3有各种版本我该安装哪...

原创小博客
20分钟前
1
0
E31---setopt=protected_multilib=false

今天在云服务器上装nginx,需要先安装一些依赖库比如zlib, ,但是安装zlib时候报错。 yum install -y zlib zlib-devel 1 (-y 指的是如果需要选yes no的自动y)下面是报错 Protected multil...

侠客行之石头
24分钟前
0
0
HTTP常见面试题

Http与Https的区别: HTTP 的URL 以http:// 开头,而HTTPS 的URL 以https:// 开头 HTTP 是不安全的,而 HTTPS 是安全的 HTTP 标准端口是80 ,而 HTTPS 的标准端口是443 在OSI 网络模型中,H...

JK_OPERA
26分钟前
0
0
python爬取站长素材网页图片保存到ppt中

网站地址:http://sc.chinaz.com/tupian/index.html 直接上代码: import requestsfrom bs4 import BeautifulSoupfrom pptx import Presentationfrom pptx.util import Inchesimpor......

你为什么不吃药
27分钟前
1
0
Ubuntu 18.04 swap空间的修改

一、准备工作 执行“sudo swapon -s”命令,查看是否已经存在swap file 二、修改swap file # 如果第一步存在swapfile则需要先禁用sudo swapoff /swapfile# 修改swap 空间的大小为2Gs...

Iceberg_XTY
30分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部