小猪的C语言快速入门系列(七)
2017-10-17 14:41
316 查看
小猪的C语言快速入门系列(七)
标签: C语言本节引言:
在第五节的时候我们对C里的指针进行了初步的学习,而作为C语言的灵魂,
当然不会就那么简单,本节我们来进一步学习指针,包括:
函数与指针,
指针数组,
二级指针,
内存的动态以及
const修饰指针。
本节学习路线图
1.函数与指针
1)指针作为函数的形参
2)指向函数的指针
3)指针函数
4)带参数的主函数
该程序需要用到命令行参数,需要先编译生成exe,然后cmd命令行来到生成的exe文件
所在目录下输入:文件名 one two three,结果会输出one two three。
2.指针数组
问题引入:如何保存一个字符串更好?如果保存的不止一个,而是多个字符串呢?问题一回答:
char name[20] = “~” ②char *name = “~” //前者定义了长度,不能直接赋值,明显后者比较灵活
问题二回答:
3.二级指针
4.内存的动态分配
代码示例:
动态分配10个int类型的空间大小,如果大于这个数目则动态分配,否则利用realloc
重新分配内存。
#include <stdio.h> #include <stdlib.h> #define N 10 int main() { int *p = 0; int i,num,*q = 0; p = (int *)malloc((N * sizeof(int))); if(p == 0) { printf("内存分配错误!\n"); exit(0); } printf("请输入要存储的元素个数:\n"); scanf("%d",&num); if(num <= N) { for(i = 0;i < N;i++) scanf("%d",p+i); } else { for(i = 0;i < num;i++) q = (int *)realloc(p,(N + N)*sizeof(int)); if(q == 0)exit(0); for(i = 0;i < num;i++) scanf("%d",q + i); p = q; } for(i = 0;i < num;i++) printf("%3d",*(p+i)); printf("\n"); free(p); return 0; }
5.使用const修饰指针变量
const关键字修饰的数据类型是指
常类型,最简单的用法是用来定义const
常量,具有不变性,比如int const a = 10; 要注意一点:
const修饰的常量在声明的时候就要进行初始化赋值,不然后面是不能赋值的!
另外在与指针结合使用的时候,const 颠倒写 表示的意思是不一样的!
int const *a; //修饰指向的内容,a可变,a指向的内容不可变
int *const a; //修饰指针a,a不可变,a指向的内容可变
const int *a; //修饰指向的内容,a可变,a指向的内容不可变
const int *const A; //指针a和a指向的内容都不可变
上述结论可以自行修改下述例子里指针与指向的内容自行测试:
#include<stdio.h> int main() { int const a; a = 5; printf("a = %d\n",a); return 0; }
本文链接:小猪的C语言快速入门系列(七)
作者:Coder-Pig
出处:http://blog.csdn.net/coder_pig
本文基于知识共享署名-相同方式共享 4.0 国际许可协议发布,欢迎转载,
演绎或用于商业目的,但是必须保留本文的署名及链接。åç
相关文章推荐
- 小猪的C语言快速入门系列(三)
- 小猪的C语言快速入门系列(八)
- 小猪的C语言快速入门系列(四)
- 小猪的C语言快速入门系列(二)
- 小猪的C语言快速入门系列(六)
- 小猪的C语言快速入门系列(九)
- 小猪的C语言快速入门系列(一)
- 小猪的C语言快速入门系列(五)
- C语言快速入门系列-详解
- 快速入门系列--MVC--06视图
- Netty 快速入门系列 - Chapter 7 数据包协议【第十六讲】数据传输问题
- Netty 快速入门系列 - Chapter 7 数据包协议【第十八讲】解决方案-经典协议包结构
- c语言快速入门1
- C++快速入门系列教程
- linux shell编程五步拳(张迅雷闪击shell系列) 第一集 shell基本语法快速入门
- Sencha Touch 框架快速入门系列
- C语言快速入门之指针
- Elasticsearch顶尖高手系列-快速入门篇
- 快速入门系列--Log4net日志组件
- webService快速入门入门系列《3》----wsdl文件