C/C++语言备忘

# C/C++语言备忘

## 一)数组

一维数组:
a[2]  

二维数组:
a[2][3]

多维数组:
a[2][3][4]

字符数组:
char *pchar[] ={"abc","ef"}

## 二)指针

变量指针:
int *p

数组指针:
int (*p)[3]

函数指针:
int (*f)(int ,int)

一级指针、二级指针以及多级指针:
一级指针:指向普通变量的指针
二级指针:指向指针的指针,类似:
int ** p2

## 三)数组和指针

数组是连续储存数据的一种数据类型(线性储存),可以通过下标快速索引
指针直接储存各种类型变量的地址,可以通过指针修改变量值,但需要确保其合法性(不能为NULL)
int *a[3]   ---- 指针数组,数组中存放的元素为指针
int (*a)[3]  ---- 数组指针,该指针指向一个含3个int变量的一维数组

## 四)const修饰

1)int  const * p;
2)const int *p;
3)int  * const p;
4)int const * const p;
1)、2) 表示 指向常量的指针变量,不能通过指针修改值,但可以更改指针指向;
3)表示指向变量的常指针,不能更改指针的指向,但是可以通过指针修改变量的值;
4)表示指向常量的常指针,二者都不能修改


## 五)数组 /指针作为传参
当数组作为指针传参时,此时退化为指针,无法得知数组的长度,需要额外参数携带;

## 六)各表示含义
**一维数组:**
int a[3]
a             - 数组首行首元素地址,一级指针
&a[0]      - 数组首行首元素地址,一级指针,和上面一样
a[0]         - 数组首个元素
a[1]         - 数组第二个元素
&a         - 整个数组的首地址,二级指针
&a         :首行地址
*&a -> a:首行首元素地址
a+1        - 地址,跳4个字节
&a+1    - 地址,跳12个字节(整个数组占用空间)
sizeof(a)        - 取的是整个数组长度12字节
sizeof(a[0])    - 取的是数组首元素大小,4字节
sizeof(&a)    - 取的是一维数组整个数组的地址(首行地址),指针,占用大小和操作系统位数有关
————————————————
数组指针变量
int *p = a;
int *p = &a[0];
    -上述表述一致,都是一级指针
    
int (*p)[3] = &a;   --- 表示二级指针

或:
typedef int ARRARY[3];
ARRARY *p;
p=&a  //p指向a数组,指向一维数组的指针
(*p)[i] //指针操作方式
 //p=&a
 //*p->*(&a)->a
 //(*p)[i]->a[i]

或:
typedef int (*Q)[10];
Q p;
p=&a;
————————————————
**二维数组:**

int a[2][3]
a:二维数组首元素地址,代表首行地址,相当于一维数组整个的数组地址,相当于上面的一维的&a
*a:首行首元素地址,相当于一维数组首元素地址,相当于一维的a
a+i -> &a[i] :第i行地址
*(a+i)->*&a[i]->a[i]:第i行首元素地址
*(a+i)+j->a[i]+j->&a[i][j]:第i行第j列元素的地址
*(*(a+i)+j)->a[i][j]:第i行j列元素的值

sizeof(a):     二维数组整个数组长度
sizeof(a[0]):   a[0]为第0行首元素地址,相当于测第0行一维数组的长度:4*3=12字节
sizeof(a[0][0]):a[0][0]为第0行第0列的元素长度:4个字节

数组指针

int (*p)[3];

int* p2;
p=&a    //错误, x, 是整个二维数组的首地址, 不能直接给p,会报编译告警
p=a      //ok, a是第0个一维数组整个数组的地址,无需加&; p++ 偏移量为一维数组长度

p2 = a[0]; /// p2++  偏移量为单个元素长度
————————————————

指针相减:

(p+1)-p  --- 是指的偏移量/指针指向变量大小      = 1,不是实际两个地址相减

 

基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip基于MATLAB实现旅行推销员问题(TSP)的代码+项目说明(课程大作业)+测试数据.zip 【备注】 1、该资源内项目代码百分百可运行,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值