博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
<C-指针02> 2017/11/24
阅读量:5318 次
发布时间:2019-06-14

本文共 2651 字,大约阅读时间需要 8 分钟。

/*复习 1.指针类型  int *    指针类型     指针指向的变量类型    指针指向哪个变量    2.基本数据类型  4种    指针类型         存放的地址  和系统有关系  4个字节    数组类型    结构体 枚举 联合3.指针加法减法 p++    和数组搭配使用4.两个运算符  *取值(解引用)   &取地址5.  *(p+i)  p[i]            (p是指针  i是整型)        p[i]的地址   &p[i]     p+i*/#include
#include
int win;//全局变量 int main(){ //1.复习 //int* p;//int *p;int * p;没有任何区别 int* p, *q;//定义两个指针 指针前面要记得单独加* char chArr[] = "helloworld";//字符数组 存放字符串 栈区 char *pArr = "helloworld";//指针 字符串存放在常量区 ,指针指向它存放的首地址 字符串不能(不可以被修改) //代码区 全局数据区(常量区) 堆区 栈区 /* 数组输出 除了字符数组 字符数组 \0作为结尾 printf("%s",chArr);//用printf输出 %s 输出这个地址和地址后的所有字符 直到遇到\0为止 scanf("%s",chArr);//数组名就是数组首地址 数组第一个元素的地址 */ //相同点 puts(chArr);//都可以用来打印printf strcmp strlen puts(pArr); //不同点 pArr不能用于输入 //gets(chArr); //gets(pArr);//不可以修改内容 //strcpy strcat strlen 字符串的函数 //strcpy(pArr, chArr);//不可以修改常量区 //2.指针的加加 ++ 指针加1 // 指针++的时候同时解引用 int iArr[10] = { 0 }; int iBrr[10] = { 0 }; p = iArr, q = iBrr; //*p++; (*p)++; printf("*p=%d,p=%p\n", *p, p); //*p++; *p++=5; //先给*p赋值 然后p++ 等价*p=5,p++ printf("*p=%d,p=%p\n", *p, p); printf("*q=%d,q=%p\n", *q, q); (*q)++; printf("*q=%d,q=%p\n", *q,q); /* *p++ p加了1 (*p)++ p指向的内容 加了1 *(p++) 和*p++没有区别//课后自己试试 * 后++ 取值  p++ 都是操作指针 *p++   (*p)++ 对*p进++ 指向的变量进行++ 今天的作业题目 测试作用 *++p ++*p 附加题(可以不做) 测试二级指针和数组指针加1之后的地址偏移 */ //3.指针和数组 (理论) /* 指针加1 偏移一个数据的长度 数组同样可以看成一个类型 int arr[10] arr -->大小 存数据 地址 */ int idArr[5][10];//二维数组 //p = idArr;//类型不一致 //方案1 //p = &idArr[0][0]; //赋值数组第一个元素地址 //for (int i = 0; i < 5 * 10; i++)//用指针给数组赋值 //{ // *p = i; // p++; // //*p++ = i; //} //方案2 //数组指针 指针指向整个数组 //int (*pd)[10]=idArr; int(*pd)[10];//定义一个数组指针 //pd= idArr; pd = &idArr[0];//赋值 for (int i = 0; i < 5; i++)//用数组指针给他赋值 { for (int j = 0; j < 10; j++) { pd[i][j] = i*j;//使用 } } /* pd[i][j] (*(p+i))[j] *(p[i]+j) *(*(p+i)+j)等价 *pd[3] ==>*((pd[3])+0) */ //数组指针和指针数组 int(*point)[10];//数组指针 指向数组的指针 int *parr[10];//指针数组 int* parr[10] 指针数组 10个int* 10个元素都是指针 //二级指针 指针保存的是一个一级指针的地址 用到二级指针 int **pp; pp= &p;//p是一级指针 pp保存一级指针地址 pp = parr;//指针数组名 pp = &parr[0];//parr[0]是一个一级指针 for (int i = 0; i < 5; i++)//循环打印 { for (int j = 0; j < 10; j++) { printf("%d\t", idArr[i][j]); } printf("\n"); } getchar(); return 0;}

 

转载于:https://www.cnblogs.com/guijin/p/8298176.html

你可能感兴趣的文章
ubuntu12.04通过ppa安装JDK7环境
查看>>
相关技术扩展地址
查看>>
jQuery.Callbacks源码解读
查看>>
[LeetCode] 68. Text Justification 文本对齐
查看>>
[LeetCode] 697. Degree of an Array 数组的度
查看>>
666 专题四 并查集
查看>>
模拟3
查看>>
小众公众号的简单运营
查看>>
Sql Server 附加没有日志文件的数据库(.mdf)文件方法
查看>>
系统调用方式文件编程-open
查看>>
python实战项目之爬虫(一)
查看>>
spring boot项目分享
查看>>
开放平台那些事
查看>>
CLion之C++框架篇-优化框架,引入boost(三)
查看>>
集合的addAll方法--list.addAll(null)会报错--java.lang.NullPointerException
查看>>
C#学习笔记—了解C#
查看>>
python使用dbm持久字典详解
查看>>
ls命令
查看>>
mysql建立自增主键的插入,及自动插入当前时间
查看>>
angular语法:Controller As
查看>>