Part6 数组、指针与字符串 6.6指针与数组

数组是一组连续存储的同类型数据,可以通过指针的算术运算,使指针依次指向数组的各个元素,进而可以遍历数组。

定义指向数组元素的指针:

    int a[10], *pa;
    pa=&a[0]; 或 pa=a;

经过上述定义及赋值后:
*pa就是a[0],*(pa+1)就是a[1],... ,*(pa+i)就是a[i].
a[i], *(pa+i), *(a+i), pa[i]都是等效的。

//例6-7 (1) 使用数组名和下标访问数组元素
#include<iostream>
using namespace std;
int main(){
    int a[10] = {1,2,3,4,5,6,7,8,9,0};
    for(int i = 0;i < 10; i++)
        cout << a[i] << " ";
    cout << endl;
    return 0;
}
//例6-7 (2) 使用数组名和指针运算访问数组元素
#include<iostream>
using namespace std;
int main(){
    int a[10] = {1,2,3,4,5,6,7,8,9,0};
    for(int i = 0; i < 10; i++)
        cout << *(a+i) << " ";
    cout << endl;
    return 0;
}
//例6-7 (3) 使用指针变量访问数组元素
#include<iostream>
using namespace std;
int main(){
    int a[10] = {1,2,3,4,5,6,7,8,9,0};
    for(int *p = a; p<(a+10); p++)
        cout << *p << " ";
    cout << endl;
    return 0;
}

指针数组:数组的元素是指针型

//例6-8 利用指针数组存放矩阵
#include<iostream>
using namespace std;
int main(){
    int line1[] = {1,0,0};//矩阵的三行
    int line2[] = {0,1,0};
    int line3[] = {0,0,1};

    int *pLine[3] = {line1,line2,line3};//定义整型指针数组并初始化
    cout << "Matrix test: " << endl;
    for(int i = 0;i < 3; i++){
        for(int j = 0; j < 3; j++)
            cout << pLine[i][j] << " ";
        cout << endl;
    }
    return 0;
}
时间: 2025-02-01 20:59:51

Part6 数组、指针与字符串 6.6指针与数组的相关文章

输入5个学生的名字(英文),使用冒泡排序按从大到小排序。 提示:涉及到字符串数组,一个字符串是一个一维字符数组;一个 字符串数组就是一个二维字符数组。

#include <stdio.h>#include <string.h> /*输入5个学生的名字(英文),使用冒泡排序按从大到小排序.提示:涉及到字符串数组,一个字符串是一个一维字符数组:一个字符串数组就是一个二维字符数组.*/ void main(){ char stuNames[5][100]; char tmp[100]; int i = 0,j = 0; for(i = 0; i < 5; i++) { printf("请输入第%d个学生的名字:"

终于懂了:Delphi的函数名不是地址,取地址必须遵守Object Pascal的语法(Delphi和C的类比:指针、字符串、函数指针、内存分配等)good

这点是与C语言不一样的地方,以前我一直都没有明白这一点,所以总是不明白:函数地址再取地址算怎么回事? ---------------------------------------------------------------------------------------------------------------- 在学习Delphi的时候,一个很好的建议是和C/C++去类比着学习,从指针,到内存管理,到数组,到面向对象……各个方面,都是有很多可以相似和或者也有不同的方,类比着学习,一

第6章 数组、指针与字符串(一)对象数组

原文地址:https://www.cnblogs.com/ZHONGZHENHUA/p/10231261.html

深入理解C指针之五:指针和字符串

基础概念 字符串可以分配到内存的不同区域,通常使用指针来支持字符串操作.字符串是以ASCII字符NUL结尾的字符序列.ASCII字符NUL表示为\0.字符串通常存储在数组或者从堆上分配的内存中.不过,并非所有的字符数组都是字符串.例如,字符数组可能没有NUL字符. C中有两种类型的字符串. * 单字节字符串.由char数据类型组成的序列. * 宽字符串.由wchar_t数据类型组成的序列. wchar_t数据类型用来表示宽字符串,可能是16位或32位宽.这两种字符串都以NUL结尾.宽字符主要用来

Part6 数组、指针与字符串 6.10 智能指针 6.11 vector对象

6.10 智能指针C++11 提供智能指针的数据类型,对垃圾回收技术提供了一些支持,实现一定程度的内存管理 unique_ptr:不允许多个指针共享资源,可以用标准库中的move函数转移指针shared_ptr:多个指针共享资源weak_ptr:可复制shared_ptr,但其构造或者释放对资源不产生影响 6.11 vector对象为什么需要vector? 封装任何类型的动态数组,自动创建和删除. 数组下标越界检查. 例6-18 中封装的ArrayOfPoints也提供了类似功能,但只适用于一种

Part6 数组、指针与字符串 6.12 对象复制与移动

1 深层复制与浅层复制浅层复制:实现对象间数据元素的一一对应复制.深层复制:当被复制的对象数据成员是指针类型时,不是复制该指针成员本身,而是将指针所指对象进行复制. //6-22 对象的深层复制 #include <iostream> #include <cassert> using namespace std;//Point同6-18 class Point{ public: Point():x(0),y(0){ cout << "Default Const

菜鸟入门记录篇1--C语言中两种关于字符串表达的方法(数组和指针)

现需表示一个字符串“itcast”,表示方法如下所列: 方法1: char name[]="itcast";     //此时定义的是一个字符串变量,数组内包含了6个字母及‘\0’一共7个元素,储存在内存的栈里面,数组内部的字符可以随意改动: (注:内存的“栈”里面储存的是局部变量,值是可以随意更改的) name[0]='t'; printf(“%s\n”,name); 输出结果为:ttcast: 方法2: char *name="itcast";    //此时定

指针 指针与数组 指针与字符串 指针与函数 结构体与指针 宏

指针 指针与数组 指针与字符串 指针与函数?? 指针与数组 1.数组名:数组元素首地址 eg: int array[3]={1,3,6}; 这里array 恒等于&array[0] 2.int *p = a; int *p = 0; int a[]={0}; 3.int *p = a; 均指向数组的首地址 *p是? *(p+1)是?(*p)+1是? *(p+1)决定向下移动几个字节是类型 4.指针可以当数组名使用 p[1] = 3; 恒等于a[1] ;恒等于*(p+1);恒等于*(a+1) 5.

关于DELPHI数组,指针,字符串转换的例子!(转)

var   aa:   array [0..5] of Char;   bb:Pointer;   cc:string;   dd:PChar; procedure TForm1.Button1Click(Sender: TObject);begin dd:='abcdef'; //以下是pchar内容转数组FillChar(aa,length(dd),#0);Move(dd^,aa,SizeOf(aa)); //以下是数组传递到指针bb:=GetMemory(SizeOf(aa));Move(