计算机专业C语言编程学习重点:指针化难为易

C语言是面向过程的,而C++是面向对象的

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

相信对于学习过C语言的人来说指针一直是一个难点。其实C语言也就只有这么一个难点,攻破了这个难点,要做的就是不断实践了,毕竟想好学好一门语言不实践是不行的。

每一个变量都有一个内存位置,每一个内存位置都定义了可使用连字号(&)运算符访问的地址,它表示了在内存中的一个地址,我们先了解什么是内存地址以及如何访问它。看下面的实例,它将输出定义的变量地址:

小编推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

当上面的代码被编译和执行时,它会产生下列结果:

接下来让我们看看什么是指针吧!

指针是一个变量,其值为另一个变量的地址,即内存位置的直接地址。就像其他变量或常量一样,您必须在使用指针存储其他变量地址之前,对其进行声明。指针变量声明的一般形式为:

type *name;

这里的type 是指针的基类型,它必须是一个有效的 C 数据类型,name 是指针变量的名称。用来声明指针的星号 * 与乘法中使用的星号是相同的。但是,在这个语句中,星号是用来指定一个变量是指针。以下是有效的指针声明:

所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。

在此列出一些平常可能用到的指针例子

小编推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

接下来我们看下什么是函数指针

一个函数总是占用一段连续的内存区域,函数名在表达式中有时也会被转换为该函数所在内存区域的首地址,这和数组名非常类似。我们可以把函数的这个首地址(或称入口地址)赋予一个指针变量,使指针变量指向函数所在的内存区域,然后通过指针变量就可以找到并调用该函数。这种指针就是函数指针。

函数指针的定义形式为:

returnType (*pointerName)(param list);

returnType 为函数返回值类型,pointerNmae 为指针名称,param list 为函数参数列表。

注意:

( )的优先级高于*,第一个括号不能省略,如果写作returnType *pointerName(paramlist);

就成了函数原型,它表明函数的返回值类型为returnType *。

下面写一个简单的栗子:

编译并运行结果如下:

上面对msg函数进行了调用,fun_p是一个函数指针。

总结:

指针(Pointer)就是内存的地址,C语言允许用一个变量来存放指针,这种变量称为指针变量。指针变量可以存放基本类型数据的地址,也可以存放数组、函数以及其他指针变量的地址。

常见的指针含义:

小编推荐一个学C语言/C++的学习裙【 七三零,一三零,二二一 】,无论你是大牛还是小白,是想转行还是想入行都可以来了解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!

这些是C/C++能做的

服务器开发工程师、人工智能、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像处理、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

原文地址:https://www.cnblogs.com/xiaochen520/p/9181085.html

时间: 2024-08-29 13:51:05

计算机专业C语言编程学习重点:指针化难为易的相关文章

Java语言编程学习之Lambda表达式设计和架构的原则[图]

Java语言编程学习之Lambda表达式设计和架构的原则[图]:大家都知道,Lambda表达式是对Java语言的一点简单改进,在JDK标准类库中,运行它的方式各种各样.但是大多数的Java代码都不是由开发JDK的程序猿写的,而是像我们这样的普通程序猿.很多人都会碰到过这样的情况:你实现了一个新功能或修复了一个缺陷,并且对自己的修改很满意.但其他人看了你的代码后--也许发生在代码审查环节,完全不买账!对于什么是好代码,什么是坏代码,存在分歧很正常!设计模式的改变设计模式是人们熟悉的另一种设计思想,

linux下的c语言编程学习笔记

视频参看csdn学院王阳和下面的linux环境下c语言编程基础相当的经典,其中王阳的视频讲的很好,相当的经典 编译hellogcc.c需要依赖/home目录下的头文件 为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式.在能够支持这两种方式的编译器上,二者并没有太大的区别,但是两者仍然还是有一些细微的区别. 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ...

大学计算机专业有非编程的吗?

就现在的大学计算机专业来看: 1.软件开发专业(计算机科学与技术.软件工程等):,就是编写代码,开发程序,也是我们常说的程序员,码农: 2.计算机网络技术(通信,网络安全与管理等):界定很宽泛,主要涉及领域有通信协议,网路信息安全等等.    3.电子专业:更倾向于硬件,单片机,嵌入式等 4.计算机应用技术:,倾向于"应用",本科这个专业很少见,多见于专科.什么都学,软件.硬件.网络.数据库,但都是皮毛,目标是结合其他行业领域的特点使用计算机.比如:工业设计/制图,动漫/flash,多

飞机大战c语言编程学习体会

#include <stdio.h>#include <conio.h>#include <stdlib.h>#include <time.h>#define N 35void print(int [][N]);//输出函数void movebul(int [][N]);//子弹移动函数void movepla(int [][N]);//敌机移动函数void setting(void);//设置函数void menu(void);//菜单函数int scr[

C语言编程中的指针

单片机编程中,涉及指针的地方很多,需要多看多练习多总结.#include <string.h>#include <stdio.h>#include <stdlib.h>int main(void){unsigned int pInt32;//指向32位无符号整数的指针unsigned int UINT32_1;//32位的无符号整数unsigned int Array1_UINT32[]={1,9,0,1};//存储4个32位无符号整数的数组unsigned short

Perl语言编程&gt;&gt;学习笔记

1. 使用反引号可以调用外部程序并返回程序的输出, 如  $cwd = `pwd`; 2. Perl 中的变量类型之间的区别主要是单数和复数; 单数变量称为标量 $scalar , 复数变量称为数组 @array .   Perl中还有 Hash, Handle, typeglob 和引用 等一些变量类型.  Perl中的标量可以使用 = 赋值, 可以指向其他变量或对象等等复杂数据结构的引用. 3.Perl中的引用 $ary = \@myarray; # 引用一个命名数组 $hsh = \%my

计算机专业学生一定要学好这几门课!(转)

很多程序员,包括计算机专业出身的程序员,也包括通过自学成为程序员的非科班同学,在工作一两年后甚至更久后,基本上都会碰到技术瓶颈,由此可能产生很长一段时间的迷茫期. 在这个迷茫期,很多程序员都在思考类似自己是不是适合做程序员.是否要做一辈子程序员.是否要转行到其他职业,比如产品经理等问题.如果不能很快地得到这些问题的答案,那么这些程序员就会一直被这些问题所困扰,举步难行,浪费大好光阴. 这篇文章不是用来探讨程序员是否能干一辈子.程序员如何转型到产品经理等问题的.相反,这篇文章的目的是想要帮助那些迷

【转】计算机专业不是学编程

学计算机的如果你有耐心看下去,我敢保证这绝对是一种收获大师提醒: 计算机专业不是学编程,而是懂得计算机的工作原理,以及和计算机相关的学科技术.一个高手不必懂得编程,coder是最底层的人物,最重要的是思想,解决问题的思想.对计算机专业的学生来说,英语和数学也是最重要的.编程不用于实际,编得最好也是花哨,毫无意义.对于初学者来说,应该懂得更多的why 原理,而不是更多的how,那是工作后的事情. 每一计算机学者都应该有自己的思想,不要跟着别人走,不要看着别人用什么新技术作出什么来的时候,你就心动了

大学的计算机专业学生怎么学习

现在到大学基本上都是上了十几年学,不说是学习老手,也是应试老手了,但是大学越上越不会考试了,更不会学习了,面对计算机专业这个对专业要求很高的专业,得想想怎么学习,怎么面对快速发展的技术,很多人说讲究效率,但是效率怎么产生,得有策略,十几年的学只是教会了我们怎么考试,但是没有教会我们怎么学习,特别是怎么自学,在大学三年,慢慢就发现现在学的不是学习,而是怎么学习,在这个技术快速更新的专业,学会学习,才是立命之本. 就拿我们学校专业课程来说,我总结了一下路线,基本上就是那么几种: 1.软件开发 2.a