php程序员学C/C++之学习系列-【C基础】
2014-06-03 19:17
302 查看
其实 语言的大多数地方时想通的,再加上PHP是由C写的,所以我们要学写C很容易
其实一门语言说来说去就是那些东西,对于C来说
数据类型
基本数据类型short、int、long、char、float、double
构造类型 数组 结构体struct 联合体union 枚举enum
指针
空类型 void
宏
语法:
控制语句
跳转语句
循环
编程范式
内置函数
动态分配内存
数据结构和算法
以上难点在什么地方呢 是在指针的操作和内存管理。注意:不是说指针的含义很难 ,指针的定义很简单。
定义:指针是一种数据类型,与其它的数据类型不同的是指针是一种“用来存放地址值的”变量
这个很容易理解 指针是数据类型
int 是用来表示值是整数值的变量
* 是用来表示值是地址值的变量
为什么都说指针难 其实难的不是指针 而是指针背后的东西 数据结构和算法 以及汇编
汇编 让你理解指针的原理
数据结构和算法让你学习指针的用法
这也是我通过自学的情况下理解的 我自学了汇编 把操作系统和计算机组成原理页啃了一遍 所以从原理上对指针的理解更直观
我现在正在学习数据结构和算法(在学习数据结构和算法的时候 其实都是为节省更少的空间和时间来出发的 就牵涉到内存的管理)
我数学不是很好 不过我不是说想去自己写一个操作系统 自己写一个编译器 我只是想通过学习C|C++ 能去更深入的理解PHP和网络编程
所以在我目标明确的情况下 我就不存在惧怕 或者 认为自己基础不好而不迈出自己去探索更深的东西的接口
下列的事指针的表现形式
1,一个整形数: int a;
2,一个指向整形数的指针: int *a;
3,一个指向指针的指针,它指向的指针指向一个整形数: int **a;
4,一个有10个整形数的数组: int a[10];
5,一个有10个指针的数组,每个指针指向一个整形数: int *a[10];
6,一个指向有10个整形数的数组的指针: int (*a)[10];
7,一个指向指针的指针,被指向的指针指向一个有10个整形数的数组: int (**a)[10];
8,一个指向数组的指针,该数组有10个整形指针: int *(*a)[10];
9,一个指向函数的指针,该函数有一个整形参数并返回一个整形数: int (*a)(int);
10,一个有10个指针的数组,每个指针指向一个函数,该函数有一个整形参数并返回一个整形数: int (*a[10])(int);
11,一个函数的指针,指向的函数的类型是有两个整形参数并且返回一个函数指针的函数,返回的函数指针指向有一个整形参数且返回整形数的函数: int (*(*a)(int,int))(int);
需要区分的几个有关指针的问题:
1.const指针与指向const的指针
1)const 指针:指针是const,
比如:int * const x;
表示指针不能修改,不能指向其他对象,但是指针所指向的地址的值可以修改;
2) 指向const的指针:指针指向const对象
比如:const int *x;
或:int const *x;
表示指针可以指向其他对象,但指针所指的当前对象的值不可以修改。
2.函数指针与函数返回指针
1)函数指针:指向函数的指针
比如:int (*p)(int x, int y);
表示p为一个指针,指向函数的首地址;
2)函数返回指针:函数的返回值为指针类型
比如:int *p(int x, int y);
表示该函数返回值为指针类型。
3.数组指针与指针数组
1)数组指针:指向数组的指针
比如:int (*p)[10];
表示一个指针,指向具有10个整形元素的一维数组;
2)指针数组:数组元素为指针的数组
比如:int *p[10];
表示一个一维数组,元素均为整形指针。
这里给个链接 也是一个自学C的哥们写的学习计划,觉得还不错:
/article/2031494.html
再说一次:
我们学习东西,一定要有目的去学习,因为现在是信息大爆炸时代,我们总感觉自己需要学习的东西太多,没有目的或者目标的话,你总觉得自己还有好多东西不会,总觉得自己是个菜鸟,这样会让自己缺乏信心和学习的动力,所以带着目标去学习吧,骚年,学东西,不在多而在专,迟早我们也是某一领域的大牛!
内置函数
其实一门语言说来说去就是那些东西,对于C来说
数据类型
基本数据类型short、int、long、char、float、double
构造类型 数组 结构体struct 联合体union 枚举enum
指针
空类型 void
宏
语法:
控制语句
跳转语句
循环
编程范式
内置函数
动态分配内存
数据结构和算法
以上难点在什么地方呢 是在指针的操作和内存管理。注意:不是说指针的含义很难 ,指针的定义很简单。
定义:指针是一种数据类型,与其它的数据类型不同的是指针是一种“用来存放地址值的”变量
这个很容易理解 指针是数据类型
int 是用来表示值是整数值的变量
* 是用来表示值是地址值的变量
为什么都说指针难 其实难的不是指针 而是指针背后的东西 数据结构和算法 以及汇编
汇编 让你理解指针的原理
数据结构和算法让你学习指针的用法
这也是我通过自学的情况下理解的 我自学了汇编 把操作系统和计算机组成原理页啃了一遍 所以从原理上对指针的理解更直观
我现在正在学习数据结构和算法(在学习数据结构和算法的时候 其实都是为节省更少的空间和时间来出发的 就牵涉到内存的管理)
我数学不是很好 不过我不是说想去自己写一个操作系统 自己写一个编译器 我只是想通过学习C|C++ 能去更深入的理解PHP和网络编程
所以在我目标明确的情况下 我就不存在惧怕 或者 认为自己基础不好而不迈出自己去探索更深的东西的接口
下列的事指针的表现形式
1,一个整形数: int a;
2,一个指向整形数的指针: int *a;
3,一个指向指针的指针,它指向的指针指向一个整形数: int **a;
4,一个有10个整形数的数组: int a[10];
5,一个有10个指针的数组,每个指针指向一个整形数: int *a[10];
6,一个指向有10个整形数的数组的指针: int (*a)[10];
7,一个指向指针的指针,被指向的指针指向一个有10个整形数的数组: int (**a)[10];
8,一个指向数组的指针,该数组有10个整形指针: int *(*a)[10];
9,一个指向函数的指针,该函数有一个整形参数并返回一个整形数: int (*a)(int);
10,一个有10个指针的数组,每个指针指向一个函数,该函数有一个整形参数并返回一个整形数: int (*a[10])(int);
11,一个函数的指针,指向的函数的类型是有两个整形参数并且返回一个函数指针的函数,返回的函数指针指向有一个整形参数且返回整形数的函数: int (*(*a)(int,int))(int);
需要区分的几个有关指针的问题:
1.const指针与指向const的指针
1)const 指针:指针是const,
比如:int * const x;
表示指针不能修改,不能指向其他对象,但是指针所指向的地址的值可以修改;
2) 指向const的指针:指针指向const对象
比如:const int *x;
或:int const *x;
表示指针可以指向其他对象,但指针所指的当前对象的值不可以修改。
2.函数指针与函数返回指针
1)函数指针:指向函数的指针
比如:int (*p)(int x, int y);
表示p为一个指针,指向函数的首地址;
2)函数返回指针:函数的返回值为指针类型
比如:int *p(int x, int y);
表示该函数返回值为指针类型。
3.数组指针与指针数组
1)数组指针:指向数组的指针
比如:int (*p)[10];
表示一个指针,指向具有10个整形元素的一维数组;
2)指针数组:数组元素为指针的数组
比如:int *p[10];
表示一个一维数组,元素均为整形指针。
这里给个链接 也是一个自学C的哥们写的学习计划,觉得还不错:
/article/2031494.html
再说一次:
我们学习东西,一定要有目的去学习,因为现在是信息大爆炸时代,我们总感觉自己需要学习的东西太多,没有目的或者目标的话,你总觉得自己还有好多东西不会,总觉得自己是个菜鸟,这样会让自己缺乏信心和学习的动力,所以带着目标去学习吧,骚年,学东西,不在多而在专,迟早我们也是某一领域的大牛!
内置函数
相关文章推荐
- C++基础学习系列第一部分——变量和基本类型
- C\C++ 程序员从零开始学习Android - 个人学习笔记(十) - java基础 - 多线程(待续)
- C++基础学习系列--2、递归思想,内置函数,函数重载,函数模板,带默认值函数
- C\C++ 程序员从零开始学习Android - 个人学习笔记(五) - java基础 - 类(待续)
- EA&UML日拱一卒-0基础学习微信小程序(9)-C++程序员眼中的app.js
- php基础系列:从用户登录处理程序学习mysql扩展基本操作
- C\C++ 程序员从零开始学习Android - 个人学习笔记(九) - java基础 - 异常
- C++基础学习系列第一部分——数组和指针
- C++基础学习系列——前言
- 【C++】学习笔记草稿版系列3(引用基础与提高)
- C\C++ 程序员从零开始学习Android - 个人学习笔记(二) - java基础 - 从源代码到运行
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- C\C++ 程序员从零开始学习Android - 个人学习笔记(三) - java基础 - 环境和工具
- C\C++ 程序员从零开始学习Android - 个人学习笔记(四) - java基础 - 数据类型、变量、字符串、数组
- C++基础学习系列-1-字符串的读取和显示
- C++基础学习系列--1、1的简陋版本--输入输出流与字符串变量的使用
- PHP程序员的C学习之路2 - 第一章, C语言的一些基础
- php基础系列:从用户登录处理程序学习mysql扩展基本操作
- C\C++ 程序员从零开始学习Android - 个人学习笔记(八) - java基础 - 继承、抽象类、接口、内部类(待续)
- 从Delphi转向VC系列学习一:C++基础知识