美文网首页C语言#语法c++#语法程序员
C语言编程入门基础结构体和指针

C语言编程入门基础结构体和指针

作者: 小辰带你看世界 | 来源:发表于2018-02-23 15:48 被阅读22次

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

C和C++的区别:

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

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

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

指针也可以指向一个结构体变量。定义的一般形式为:

struct 结构体名 *变量名;

前面已经定义了一个结构体 stu:

struct stu{

char*name;

intnum;

charsex;

floatscore;

};

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

下面定义一个指向 stu 的指针变量 pstu:

struct stu *pstu;

当然在定义结构体的同时也可以定义 pstu:

struct stu{

char*name;

intnum;

charsex;

floatscore;

}*pstu,stu1,stu2;

pstu 可以指向结构体变量:

pstu = &stu1;

pstu = &stu2;

应该把结构体变量的首地址赋给 pstu,而不能把结构体名赋给 pstu,而且结构体变量前面要加取地址符&。下面的写法都是错误的:

pstu = &stu;

pstu = stu1;

结构体名和结构体变量是两个不同的概念,不能混淆。结构体名只能表示一个结构形式,是一种数据类型,编译器并不对它分配内存空间,就像 int、float 这些关键字本身不分配内存一样。只有当一个变量被定义为这种数据类型时,才对该变量分配内存空间。所以上面 &stu 这种写法是错误的,不可能去取一个结构体名的首地址。

另外,不要认为结构体和数组类似,数组名表示数组的首地址,而结构体变量不表示首地址,它表示的是结构体本身这块内存空间的整体。就像int a;,a 不是首地址,而是表示它本身。

有了结构体指针,就可以获取结构体成员了,一般形式为:

(*结构指针变量).成员名

或者:

结构指针变量->成员名

例如:

(*pstu).num

或者:

pstu->num

注意(*pstu)两侧的括号不可少,因为成员符.的优先级高于*。如去掉括号写作*pstu.num,那么等效于*(pstu.num),这样意义就完全不对了。

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

【示例】结构体指针变量的使用。

#include

struct stu{

char*name;

intnum;

charsex;

floatscore;

}*pstu,stu1={"He fang",1,'F',92.5};

intmain(){

pstu=&stu1;

printf("Number=%d, Name=%s\n",stu1.num,stu1.name);

printf("Sex=%c, Score=%f\n\n",stu1.sex,stu1.score);

printf("Number=%d, Name=%s\n",(*pstu).num,(*pstu).name);

printf("Sex=%c, Score=%f\n\n",(*pstu).sex,(*pstu).score);

printf("Number=%d, Name=%s\n",pstu->num,pstu->name);

printf("Sex=%c, Score=%f\n",pstu->sex,pstu->score);

return0;

}

运行结果:

Number=1, Name=He fang

Sex=F, Score=92.500000

Number=1, Name=He fang

Sex=F, Score=92.500000

Number=1, Name=He fang

Sex=F, Score=92.500000

相关文章

  • C语言编程入门基础结构体和指针

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程...

  • C语言基础及指针⑧文件IO

    接续上篇C语言基础及指针⑦结构体与指针在结构体与指针中 , 我们了解到结构体与java中的类相似 , 也是一种自定...

  • C语言20 结构体指针

    C语言20 结构体指针 探测结构体指针的特性 ++、-- 加法与减法 指针相减 使用结构体指针 结构体指针一定要指...

  • Python源码剖析笔记0——C语言基础回顾

    要分析python源码,C语言的基础不能少,特别是指针和结构体等知识。这篇文章先回顾C语言基础,方便后续代码的阅读...

  • 1-ndk学习之c基础篇(3)

    前两篇文章简单写了下c语言的基础数据类型,数组类型和指针,这篇文章要写下c语言中的自定义类型,也就是结构体。结构体...

  • Golang 指针和结构体

    Golang 指针和结构体 于c语言相同,go中也有指针和结构体的概念。指针表示变量的内存地址,结构体用来存储同一...

  • 关于编程学习的资料推荐

    一、C 语言方面 谭浩强 << 数据结构 >> 、<< 操作系统 >> 、<> 、 <>...

  • C语言和OC的结构体(struct)

    Struct(结构体) 1.结构体定义 2.结构体变量 3.结构体数组 4.C语言结构体指针 5.C语言共用体 6...

  • C语言基础及指针⑦结构体与指针

    接续上篇C语言基础及指针⑥字符操作 如果说类是java中结构化数据类型的核心 , 那么结构体就是C语言中结构化数据...

  • JNI开发系列①JNI概念及开发流程

    接续上个系列C语言基础及指针 引言 在学习了C语言基础之后 ,我们简单的了解了C语言编程的一些范式 , 了解了指针...

网友评论

    本文标题:C语言编程入门基础结构体和指针

    本文链接:https://www.haomeiwen.com/subject/bhyxxftx.html