- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
c指针讲解
* a[0]等为行地址 * a[0]等为行地址 * a[0]等为行地址 * a[0]等为行地址 * a[0]等为行地址 * a[0]等为行地址 2.指针的运算 2.2 关系运算 、=、、=、==、!= 指向同一种数据类型的两个指针才能进行关系运算,值为1或0,如:p q p q p == q 不能与非指针类型变量进行比较,但可与NULL(即0值)进行等或不等的关系运算, 如:判断p是否为空指针:P == NULL 例: short int *p, a[10];p = a; 此时,数组元素a[i]有如 下几种等价引用形式 *(a+i) p[i] *(p+i) 6000 6001 6002 6003 6004 6005 6006 6007 a[0] a[1] a[2] a[3] a a+1 a+2 6000 6001 6002 6003 6004 6005 6006 6007 a[0] a[1] a[2] a[3] a p p++ p++ 3.指针与一维数组 p 例4:输入输出数组的全部元素 #includeiostream using namespace std; int main() { int a[10]; int i; for(i=0;i10;i++) cina[i]; for(i=0;i10;i++) couta[i] ; return 0; } #includeiostream using namespace std; int main() { int a[10]; int *p, i; for(p=a;p=a+9;p++) cin*p; for(p=a;p=a+9;p++) cout*p ; return 0; } 方法1:下标法 方法2:指针法 3.指针与一维数组 例4:输入输出数组的全部元素 #includeiostream using namespace std; int main() { int a[10]; int i; for(i=0;i10;i++) cina[i]; for(i=0;i10;i++) cout*(a+i) ; return 0; } 方法3:计算法 3.指针与一维数组 实际应用中很少用 三种方法的统一 无论是下标法(a[i])还是计算法(*(a+i))还是指针法(*(p +i)),尽管表现形式不同,但本质都是: *(首址+ 偏移量) 首址 偏移量 运算 下标法 a i a[i] 计算法 a i *(a+i) 指针法 p p++移到当前位置 *p 例5: #includeiostream using namespace std; int main() { int i; int a[3][2]={1,2,3,4,5,6}; int *p=a[0][0]; for(i=0;i=5;i++) cout*p++ ; return 0; } 4.指针与二维数组 回顾:二维数组在内存中按照先行后列的次序连续存放 5.指针与字符串 字符串与字符数组、字符指针 C语言并没有为字符串提供任何专门的表示法,完全使用字符数组和字符指针来处理 字符串 一串以\0结尾的字符 字符数组 每个元素都是字符类型的数组 char string[100]; 字符指针 指向字符类型的指针 char *p; 一般字符数组和字符指针都用来处理字符串 5.指针与字符串 字符指针变量与字符数组的区别 定义方法不同 char str[10]; char *ptr; 初始化含义不同 char str[10]={“china”};//为数组中的每个 元素赋初值 char *ptr=“china”;//用字符串“china”的 首地址,给指针变量ptr赋初值。 5.指针与字符串 字符指针变量与字符数组的区别 赋值方法不同 char str[10]; str = ”china”; /*错误*/ strcpy(str,”china”); /*正确*/ char *ptr; ptr = ”china”; /*正确*/ 字符指针是变量,而数组名是地址常量 指针p可整体重新赋值 p = Programming Language C; a的元素可以重新赋值,但只能通过字符串复制的方法或者为每个元素重
文档评论(0)