指针数组

《鸡啄米C++编程入门系列》系列技术文章整理收藏

落花浮王杯 提交于 2019-11-26 16:11:40
《鸡啄米C++编程入门系列》已整理成PDF文档,点击可直接下载至本地查阅 https://www.webfalse.com/read/201812.html 文章 鸡啄米:C++编程入门系列之前言 鸡啄米:C++编程入门系列之一(进制数) 鸡啄米:C++编程入门系列之二(原码、反码与补码) 鸡啄米:C++编程入门系列之三(VS2010的使用介绍) 鸡啄米:C++编程入门系列之四(数据类型) 鸡啄米:C++编程入门系列之五(运算符和表达式) 鸡啄米:C++编程入门系列之六(算法的基本控制结构之选择结构) 鸡啄米:C++编程入门系列之七(算法的基本控制结构之循环结构) 鸡啄米:C++编程入门系列之八(自定义数据类型) 鸡啄米:C++编程入门系列之九(函数的定义与调用) 鸡啄米:C++编程入门系列之十(函数的参数传递与内联函数) 鸡啄米:C++编程入门系列之十一(重载函数与函数模板) 鸡啄米:C++编程入门系列之十二(类与对象:面向对象设计的基本思想和特点) 鸡啄米:C++编程入门系列之十三(类与对象:类的声明、成员的访问控制和对象) 鸡啄米:C++编程入门系列之十四(类与对象:构造函数和析构函数) 鸡啄米:C++编程入门系列之十五(类与对象:类的组合) 鸡啄米:C++编程入门系列之十六(类与对象:类模板) 鸡啄米:C++编程入门系列之十七(类与对象:UML简介) 鸡啄米:C+

c知识点总结2

柔情痞子 提交于 2019-11-26 12:21:38
函数 int func(int x){ //x:形式参数 .... } int main(){ .... int res=func(z); //z:实际参数 } 实参与形参具有不同的存储单元, 实参与形参变量的数据传递是“ 值传递 ”; 函数调用时,系统给形参分配存储单元,并将实参对应的值传递( copy )给形参; P.S. 实参与形参的类型必须相同或可以兼容; 示例: #include<iostream> using namespace std; void exchange(int a, int b){ int p; p = a; a = b; b = p; } int main(){ int a = 3, b = 5; exchange(a, b); cout<<a<<" "<<b<< endl; return 0; } 输出结果将会是3 5. 因为在调用exchange()时,main函数里的a和b的值被copy给exchange(),然后修改的是exchange函数内存空间里的a和b,而不是main函数内的。那如何实现exchange功能呢?可以用指针 #include<iostream> using namespace std; void exchange(int *a, int *b){ int p; p = *a; *a = *b; *b = p; } int

字符串指针(char*)和字符数组(char [])区别

江枫思渺然 提交于 2019-11-26 12:03:49
原文: http://www.blogbus.com/kavine-logs/29243638.html 今天在编写几个小函数的时候,半天调不通,长久不使用C++知识都快忘光了,赶紧拣些起来应付即将到来的应聘。 void main() { char* pStr1 = "Hello!"; char pStr2[] = "Hello!"; change(pStr1); change(pStr2); } void change(char* pInstr) { pInstr[0]='O'; } 两种change编译都可以通过,但发现第二个change是可以正确地修改第一个字母为'O',而第一个会操作失败导致程序死掉。 基础知识太差,木的办法,查了查资料,两种定义字符串的方法是有区别的。 字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。 第一种方法定义的字符串中的单个字符只能读,不能修改,如cout<<pStr1[0]<<endl; 但不能做pStr1[0]='O';的操作。因为它被认为是字符串常量,常量是无法修改的。 而第二种方面定义的字符串是没有这个限制的。 来源: oschina 链接: https://my.oschina.net/u

指针数组的应用

吃可爱长大的小学妹 提交于 2019-11-26 10:33:29
在实现排序功能的时候,一般都是通过交换值的形式,通过循环逐渐得到我们想要的顺序。但是有时候排序通过值的交换实现起来比较麻烦,因此我们可以引用指针数组,通过交换地址的方式来得到我们想要的顺序。 例:char a[4][10]={"CHINA","china","ABC","abcdef"} 将四个字符串通过从小到大的顺序依次排序,如果用交换值的形式,实现起来就会比较麻烦。但是通过指针数组实现起来就很容易。 char *b[4]={a[0],a[1],a[2],a[3]} 定义一个指针数组分别依次指向字符数组,如下图所示 通过交换指针地址来实现从小到大的排序,指针数组b[0],指向的是最小字符串,b[3]指向最大字符串,如图所示: 具体代码实现:C++为例 #include<iostream> //调用cin,cout 输入输出函数 #include<stdlib.h> //调用strcmp函数来比较字符串大小 using namespace std; int main() { char a[4][10]={"CHINA","china","ABC","abcdef"}; //定义二维数组 char *b[4]={a[0],a[1],a[2],a[3]}; //定义指针数组用来存放二维数组对应的内存地址 char *temp; //定义交换两个地址的中间变量指针; int i,j; /

指针(数组与指针)

筅森魡賤 提交于 2019-11-26 08:29:12
指针与数组 数组名代表的是数组在内存中的首地址,即a[0],(也就是该数组的第一个元素) int *p,a[5]; p=a 相当于 p=&a[0]; 数组名和指向数组的指针变量的区别: 指针变量p是变量,可以赋值。 数组名a是地址是常量不能赋值。 分别用三种方法输出数组元素 #include<stdio.h> main() { int a[10]={9,8,7,6,5,4,3,2,1,0},i,*p;//定义一个整形数组并对它进行初始化赋值 for(i=0;i<10;i++) { printf("a[%d]=%d\t",i,a[i]);//下标法 } printf("\n"); for(i=0;i<10;i++) { printf("a[%d]=%d\t",i,*(a+i));//地址法 } printf("\n"); for(i=0,p=a;p<a+10;p++) { printf("a[%d]=%d\t",i++,*p);//指针法 } printf("\n"); } 来源: https://blog.csdn.net/qq3154007108/article/details/98760256

C++指针详解

不羁的心 提交于 2019-11-26 06:01:18
转载:https://www.cnblogs.com/ggjucheng/archive/2011/12/13/2286391.html 指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: int *ptr; char *ptr; int **ptr; int (*ptr)[3]; int *(*ptr)[4]; 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去掉,剩下的部分就是这个指针的类型。这是指针本身所具有的类型。让我们看看例一中各个指针的类型: int *ptr; //指针的类型是int * char *ptr; //指针的类型是char * int **ptr; //指针的类型是 int ** int (*ptr)[3]; //指针的类型是 int(*)[3] int *(*ptr)[4]; //指针的类型是 int *(*)[4] 怎么样?找出指针的类型的方法是不是很简单? 指针所指向的类型 当你通过指针来访问指针所指向的内存区时,指针所指向的类型决定了编译器将把那片内存区里的内容当做什么来看待。 从语法上看

C语言

旧街凉风 提交于 2019-11-26 02:31:56
一、编译链接过程 编译 预处理 删除注释,宏替换,头文件展开,条件编译 编译 词法分析,语法分析,语义分析,符号汇总(生成汇编代码) 汇编 将形成的汇编代码转为二进制代码,形成对应的符号表 链接 合并段表以及符号表的重定位 二、指针和数组 数组和指针的区别和联系 联系 表达式中的数组名就是指针 C语言中把数组下标作为指针的偏移量 ==作为函数参数的数组名等同于指针== 区别 数组名在传参时会退化为指针,指针不会(所以一定不要在函数内部对传参后的数组名进行sizeof大小) 内存中数组是一块连续开辟的空间,指针只占一个指针类型的大小空间(32位为4字节,64位为8字节) 数组可以通过下标直接进行访问,指针需要进行计算间接访问 数组名具有常属性,不能进行++,--操作;指针可以 数组指针和指针数组区别 以 int (*p)[n] 为例,从右往左理解,() 高优先级,先定义一个指针,然后看[],说明这是一个指向数组的指针,最后 int 型。 数组指针(int (*p)[n]) 代表一个指向有n个int类型的数组的指针,也叫行指针 指针数组(int *p[n]) 代表一个有n个int* 指针的数组 区别:数组指针由于是一个指针,所以内存中只消耗一个指针大小的空间;指针数组是一个数组,消耗n个对应类型指针大小的空间。 需要注意的点 sizeof字符串指针大小为对应平台下指针大小