C/C++ 数组与指针
#include <iostream>
using namespace std;
int main()
{
	char *a[]={"ab","ccs","html"};
	char **pa =a;
	cout << pa<<endl;     //0x7fff3f66ecd0
	cout << *pa<<endl; //ab
	cout << **pa<<endl; //a
	cout << ++*pa<<endl;  //b
	cout << *++pa<<endl; //css
cout << ++*++pa<<endl; //tml
cout << ++**pa; //signal: segmentation fault (core dumped)
return 0;
}
编译器不识别数组 数组就是指针a[]就是 *a
**pa 就是a
pa就是a的别名
没有++**pa这种,因为**pa是char
++和*是等优先级的 且从右到左
C语言优先级
| 
 优先级 
 | 
 运算符 
 | 
 名称或含义 
 | 
 使用形式 
 | 
 结合方向 
 | 
 说明 
 | 
| 
 1 
 | 
 [] 
 | 
 数组下标 
 | 
 数组名[常量表达式] 
 | 
 左到右 
 | 
|
| 
 () 
 | 
 圆括号 
 | 
 (表达式)/函数名(形参表) 
 | 
|||
| 
 . 
 | 
 成员选择(对象) 
 | 
 对象.成员名 
 | 
|||
| 
 -> 
 | 
 成员选择(指针) 
 | 
 对象指针->成员名 
 | 
|||
| 
 2 
 | 
 - 
 | 
 负号运算符 
 | 
 -常量 
 | 
 右到左 
 | 
 单目运算符 
 | 
| 
 (类型) 
 | 
 强制类型转换 
 | 
 (数据类型)表达式 
 | 
|||
| 
 ++ 
 | 
 自增运算符 
 | 
 ++变量名 
 | 
 单目运算符 
 | 
||
| 
 -- 
 | 
 自减运算符 
 | 
 --变量名 
 | 
 单目运算符 
 | 
||
| 
 * 
 | 
 取值运算符 
 | 
 *指针变量 
 | 
 单目运算符 
 | 
||
| 
 & 
 | 
 取地址运算符 
 | 
 &变量名 
 | 
 单目运算符 
 | 
||
| 
 ! 
 | 
 逻辑非运算符 
 | 
 !表达式 
 | 
 单目运算符 
 | 
||
| 
 ~ 
 | 
 按位取反运算符 
 | 
 ~表达式 
 | 
 单目运算符 
 | 
||
| 
 sizeof 
 | 
 长度运算符 
 | 
 sizeof(表达式) 
 | 
|||
| 3 | 
 / 
 | 
 除 
 | 
 表达式/表达式 
 | 
左到右 | 
 双目运算符 
 | 
| 
 * 
 | 
 乘 
 | 
 表达式*表达式 
 | 
 双目运算符 
 | 
||
| 
 % 
 | 
 余数(取模) 
 | 
 整型表达式/整型表达式 
 | 
 双目运算符 
 | 
||
| 
 4 
 | 
 + 
 | 
 加 
 | 
 表达式+表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 - 
 | 
 减 
 | 
 表达式-表达式 
 | 
 双目运算符 
 | 
||
| 
 5 
 | 
 << 
 | 
 左移 
 | 
 变量<<表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 >> 
 | 
 右移 
 | 
 变量>>表达式 
 | 
 双目运算符 
 | 
||
| 
 6 
 | 
 > 
 | 
 大于 
 | 
 表达式>表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 >= 
 | 
 大于等于 
 | 
 表达式>=表达式 
 | 
 双目运算符 
 | 
||
| 
 < 
 | 
 小于 
 | 
 表达式<表达式 
 | 
 双目运算符 
 | 
||
| 
 <= 
 | 
 小于等于 
 | 
 表达式<=表达式 
 | 
 双目运算符 
 | 
||
| 
 7 
 | 
 == 
 | 
 等于 
 | 
 表达式==表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 != 
 | 
 不等于 
 | 
 表达式!= 表达式 
 | 
 双目运算符 
 | 
||
| 
 8 
 | 
 & 
 | 
 按位与 
 | 
 表达式&表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 9 
 | 
 ^ 
 | 
 按位异或 
 | 
 表达式^表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 10 
 | 
 | 
 | 
 按位或 
 | 
 表达式|表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 11 
 | 
 && 
 | 
 逻辑与 
 | 
 表达式&&表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 12 
 | 
 || 
 | 
 逻辑或 
 | 
 表达式||表达式 
 | 
 左到右 
 | 
 双目运算符 
 | 
| 
 13 
 | 
 ?: 
 | 
 条件运算符 
 | 
 表达式1? 表达式2: 表达式3 
 | 
 右到左 
 | 
 三目运算符 
 | 
| 
 14 
 | 
 = 
 | 
 赋值运算符 
 | 
 变量=表达式 
 | 
 右到左 
 | 
|
| 
 /= 
 | 
 除后赋值 
 | 
 变量/=表达式 
 | 
|||
| 
 *= 
 | 
 乘后赋值 
 | 
 变量*=表达式 
 | 
|||
| 
 %= 
 | 
 取模后赋值 
 | 
 变量%=表达式 
 | 
|||
| 
 += 
 | 
 加后赋值 
 | 
 变量+=表达式 
 | 
|||
| 
 -= 
 | 
 减后赋值 
 | 
 变量-=表达式 
 | 
|||
| 
 <<= 
 | 
 左移后赋值 
 | 
 变量<<=表达式 
 | 
|||
| 
 >>= 
 | 
 右移后赋值 
 | 
 变量>>=表达式 
 | 
|||
| 
 &= 
 | 
 按位与后赋值 
 | 
 变量&=表达式 
 | 
|||
| 
 ^= 
 | 
 按位异或后赋值 
 | 
 变量^=表达式 
 | 
|||
| 
 |= 
 | 
 按位或后赋值 
 | 
 变量|=表达式 
 | 
|||
| 
 15 
 | 
 , 
 | 
 逗号运算符 
 | 
 表达式,表达式,… 
 | 
 左到右 
 | 
 从左向右顺序运算 
 | 
C/C++ 数组与指针的更多相关文章
- 把《c++ primer》读薄(4-2 c和c++的数组 和 指针初探)
		
督促读书,总结精华,提炼笔记,抛砖引玉,有不合适的地方,欢迎留言指正. 问题1.我们知道,将一个数组赋给另一个数组,就是将一个数组的元素逐个赋值给另一数组的对应元素,相应的,将一个vector 赋给另 ...
 - C语言核心之数组和指针详解
		
指针 相信大家对下面的代码不陌生: int i=2; int *p; p=&i;这是最简单的指针应用,也是最基本的用法.再来熟悉一下什么是指针:首先指针是一个变量,它保存的并不是平常的数据,而 ...
 - 《征服 C 指针》摘录3:数组 与 指针
		
一.数组 和 指针 的微妙关系 数组 是指将固定个数.相同类型的变量排列起来的对象. 正如之前说明的那样,给指针加 N,指针前进“当前指针指向的变量类型的长度 X N”. 因此,给指向数组的某个元素的 ...
 - C指针-数组和指针的归一
		
int bArr[] = {1,2,3}; int *iarr = bArr; *iarr = 6; printf("%d\n",*iarr); printf("%d\n ...
 - 《C专家编程》第四章——令人震惊的事实:数组和指针并不相同
		
数组和指针是C语言里相当重要的两部分内容,也是新手程序员最容易搞混的两个地方,本章我们锁定指针与数组,探讨它们的异同点. 首先来看指针与数组在声明上的区别: int a[10]; int *p; 很明 ...
 - (C语言)数组与指针的区别
		
以前常常听过这种说法,说数组和指针这两者比较像,但是不能混淆,可是一直没能理解.刚刚在李云的<专业嵌入式软件开发>中,看了讲述数组与指针区别的一章,似乎有所领悟.本着知乎上看到的这张图,我 ...
 - C语言教学--二维数组和指针的理解
		
对于初学者对二维数组和指针的理解很模糊, 或者感觉很难理解, 其实我们和生活联系起来, 这一切都会变得清晰透彻. 我们用理解一维数组的思想来理解二维数组, 对于一维数组,每个箱子里存放的是具体的苹果, ...
 - 【C语言学习】《C Primer Plus》第10章 数组和指针
		
学习总结 1.数组初始化方式: int a[]={1,2,3} int a[SIZE]={1,2,3} //SIZE是宏定义,数组初始化个数不能大于SIZE,否则报错:当个数小 //SIZE,自动补0 ...
 - C语言学习004:数组与指针
		
在C语言中,字符串实际上就是字符数组,在内存中字符串"Shatner"存储的形式是这样的
 - C语言--指向多维数组的指针和指针数组
		
#include <stdio.h> //void show(char *p[]); ]); int main(){ ][]={","abc","x ...
 
随机推荐
- Macbook 修复Office Excel 异常问题
			
manbook 版本的office excel 在一次崩溃后,每次打开excel 文件都会弹出以下烦人的错误告警,并且每次都会重新打开很多过去保存过的excel 文件. “在应用程序意外退出之前,Ex ...
 - ubuntu 16.04 单用户____修改忘记密码
			
1.开机按ESC,出现如下界面,选中如下选项 2.按回车键进入如下界面,然后选中有recovery mode的选项 3.按e进入如下界面,找到图中红色框的recovery nomodeset并将其删掉 ...
 - Codeforces Round 56-C. Mishka and the Last Exam(思维+贪心)
			
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
 - CodeForces 731C   C - Socks 并查集
			
Description Arseniy is already grown-up and independent. His mother decided to leave him alone for m ...
 - 机器学习框架ML.NET学习笔记【9】自动学习
			
一.概述 本篇我们首先通过回归算法实现一个葡萄酒品质预测的程序,然后通过AutoML的方法再重新实现,通过对比两种实现方式来学习AutoML的应用. 首先数据集来自于竞赛网站kaggle.com的UC ...
 - memcache和iptables开启11211端口
			
linux下安装完memcached后,netstat -ant | grep LISTEN 看到memcache用的11211端口已在监听状态,但建立php文件连接测试发现没有输出结果,iptabl ...
 - Code First 2
			
在codefirst一中也说了Mapping是实体与数据库的纽带,model通过Mapping映射到数据库,我们可以从数据库的角度来分析?首先是映射到数据库,这个是必须的.数据库里面一般包括表.列.约 ...
 - Java中的break循环——通过示例学习Java编程(13)
			
作者:CHAITANYA SINGH 来源:https://www.koofun.com//pro/kfpostsdetail?kfpostsid=24 break语句通常用于以下两种情况: (A)使 ...
 - 【Java】 Maven多模块项目上传到Sonar扫描问题合集
			
上传到Soanr时,项目有单元测试数,但是覆盖率为0 修改pom.xml <plugin> <groupId>org.apache.maven.plugins</grou ...
 - Rest_framework之版本控制、响应器和分页器
			
一.访问频率补充 频率: 自定义: 1 定义一个类MyThrottles allow_request(频率限制的逻辑) ==>这两个函数都是派生出来的,继承的类里面封装的. wait(返回一个数 ...