C和指针(一)

C和指针(一)

  • 预处理指令
  • main 函数
  • 常量及变量
    • 整型字面值
    • 指针:
    • 基本声明:
    • 隐式声明:
    • 常量:


预处理指令

预处理器用库函数头文件的内容替换掉相对应的#include指令语句。
使用stdio.h头文件可以使我们访问标准I/O库中的函数。
另一种预处理指令是#define ,当这个名字以后出现在源文件的任何地方时,它就会被替换为定义的值。

 int read_column_numbers ( int columns [ ] , int max );void rearrange ( char *output, char const *input , int n_columns, int const columns[] );

这些声明称为函数原型 。它们告诉编译器这些以后将在源文件中定义的函数的特征,这样,这些函数被调用时,编译器就能对它们进行准确性的检查。每个原型以一个类型名为开头,表示函数返回值的类型。跟在返回类型后面的是函数的名字, 再后面是函数期望接受的参数。所以,函数read_column_numbers 返回一个整数,接受两个类型分别是整数数组和整形标量的参数。
rearrange函数接受4个参数,其中第一个和第二个参数都是指针。指针指定一个存储于计算机内存中的值的地址。第2个和第4个参数被声明为const,这表示函数将不会修改函数调用者所传递的这两个参数。关键字void表示函数并不返回参数,在其他语言里,这种无返回的函数被称为过程

main 函数

int main( void )
main是程序执行的起点。
在C语言中,数组参数是以引用形式进行传递的,也就是传址调用,而标量和常量则是按值传递的。
所有传递给函数的参数都是按值传递的。
如今软件开销的最大之处并非在于编写,而是在于维护。
常用printf格式代码:

格式含义
%d以十进制形式打印一个整型值
%o以八进制形式打印一个整型值
%s以十六进制形式打印一个整型值
%g打印一个浮点值
%c打印一个字符
%s打印一个字符串

scanf函数中所有标量参数的前面必须加上一个“&”符号,数组参数前面不需要加上"&"符号,但是数组参数中如果加上了下标引用,也就是说实际参数是数组中某个特定元素,那么它的前面也必须加上“&”符号。

  scanf ( "%d", &columns[num] )  

常用scanf格式码:

格式含义
%d读取一个整型值 int
%ld读取一个长整型值 long
%f读取一个实型值(浮点数) float
%lf读取一个双精度实型值 double
%c读取一个字符 char
%s从输入中读取一个字符串 char型数组

&& 是“逻辑与”操作符,&&操作符两边的表达式为真时,整个表达式才为真,如果左边的表达式为假,右边的表达式便不再进行求值。

= 赋值操作不是比较操作。

return语句就是函数向调用它的表达式返回一个值。

C语言的for语句:for ( col = 0; col , n_columns; col += 2) {初始部分,    测试部分,  调整部分

执行: 程序必须载入到内存中。执行程序代码时,将使用一个运行时堆栈(stack),它用于存储函数的局部变量和返回地址。程序同时可以使用静态内存,存储于静态内存中的变量在程序的整个执行过程中将一直保留它们的值。
基本数据类型:整型家族包括字符、短整型、整型和长整型,分为有符号和无符号。
整型值互相之间的大小规则:长整型至少和整型一样长,整型至少和短整型一样长。

格式含义
char0到127
signed char-127到127
unsigned char0到256
short int-32767到32767
unsigned short int0到65535
int-32767到32767
unsigned int0到65535
long int-2147483647到2147483647
unsigned long int0到4294967295
    short int 至少16位,long int 至少32位。 

常量及变量

整型字面值

字面值 是字面值常量的缩写,它指定了自身的值,并且不允许发生改变。 命名常量 (声明为const的变量)与普通变量的区别在于,被初始化后,它的值便不能改变。
在整数字面值后面添加字符Ll,使整数被解释为long整数值,字符Uu则用于把数值指定为unsigned整型值。如果在一个字面值后面添加UL,则解释为unsigned long整型值
十六进制以0x开头,八进制以0开头。
字符常量 int类型。 是一个用单引号包围起来的单个字符(或字符转义序列或三字母词)如:‘M’ ‘\n’ ‘\377’
浮点数字面值在缺省情况下都是double类型的,除非它的后面跟一个L或l表示是一个long double类型的值,或者跟一个F或f表示它是一个float类型的值。

指针:

变量存储于计算机的内存中,每个变量都占据一个特定的位置。每个内存位置都由地址唯一确定并引用。
字符串常量是用一对双引号包围一串字符,“Hello” “\aWarning!\a” “” 即便是空字符串也存在作为终止符的NUL符号。

基本声明:

变量声明的基本形式是: 说明符(一个或多个) 声明表达式列表
说明符包含了关键字,用于描述被声明的标识符的基本类型。说明符也可以用于改变标识符的缺省存储类型和作用域。

  Int I; char j, l, l;

初始化 是在变量名后跟一个等号(赋值号),后面是想要赋给变量的值。 Int j = 15;
声明简单数组 int values[ 20 ] ; 声明了一个整型数组,数组包含20个整型元素。数组的下标是从0开始的,最后一个元素的下标是元素的数目减1.
声明指针 int a ; 这条语句表示表达式a产生的结果类型是int。知道了*操作符执行的是间接访问操作以后,我们可以推断a是一个指向int的指针。

【 间接访问操作只对指针变量才是合法的。指针指向结果值。对指针进行间接访问操作可以获得这个结果值。】

int* b, c, d; 错误 星号实际上是表达式*b的一部分,只对这个标识符有用。b是一个指针,但其余两个变量只是普通的整型。要声明三个指针,正确语句如下: int *b, *c, *d;

在声明指针变量时,你也可以为它指定初始值。Char *message = “Hello world!”; 这条语句把message声明为一个指向字符的指针,用于字符串常量中第一个字符的地址对该指针进行初始化。 前面一个声明相当于是:
char *message; message = " Hello world! ";

隐式声明:

C语言中有几种声明,它的类型名可以省略。函数如果不显式地声明返回值的类型,它就默认返回整型。
typedef: 允许为各种数据类型定义新名字。
char *ptr ; 把变量ptr声明为一个指向字符的指针。 => typedef char *ptr ; 把标识符ptr作为指向字符的指针类型的新名字。 可以在下面的声明中使用这个新名字ptr a; 声明a是一个指向字符的指针。
应该使用typedef 而不是#define 来创建新的类型名。因为后者无法正确地处理指针类型。

            #define d_ptr_to_char char * d_ptr_to_char a ,b ;

正确地声明了a ,但是b却被声明为一个字符。在定义复杂的类型名字时,如函数指针或指向数组的指针,使用typedef更为合适。

常量:

        常量和变量完全一样,只是它们的值不能被修改。 如: int const  a;  const int  a; 都可以赋值  int const a = 15;  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/37973.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业直播MR虚拟直播(MR混合现实直播技术)视频介绍

到底什么是企业直播MR虚拟直播(MR混合现实直播技术)? 企业直播MR虚拟直播新玩法(MR混合现实直播技术) 我的文章推荐: [视频图文] 线上研讨会是什么,企业对内对外培训可以用线上研讨会吗&#x…

24届近5年南京工业大学自动化考研院校分析

今天给大家带来的是南京工业大学控制考研分析 满满干货~还不快快点赞收藏 一、南京工业大学 学校简介 南京工业大学(Nanjing Tech University),简称“南工”,位于江苏省南京市,由国家国防科技工业局、住…

2023年之我拿起“java“

持续更新中………… 文章目录 javajava基础 了解 j a v a 的语法,从 H e l l o W o r l d 开始 \color{red}{了解java的语法,从HelloWorld开始} 了解java的语法,从HelloWorld开始 j a v a 语言的注释 \color{red}{java语言的注释} java语言的…

Vue3.2+TS的defineExpose的应用

defineExpose通俗来讲,其实就是讲子组件的方法或者数据,暴露给父组件进行使用,这样对组件的封装使用,有很大的帮助,那么defineExpose应该如何使用,下面我来用一些实际的代码,带大家快速学会defi…

VSCode 报错 grep: /proc/version: 权限不够

部分用户在Linux上运行VSCode提示grep: /proc/version: 权限不够 grep: /proc/version: 权限不够 You are trying to start Visual Studio Code as a super user which isn’t recommended. If this was intended, please add the argument --no-sandbox and specify an alter…

GPT带我学-设计模式-命令模式

1 你知道设计模式的命令模式吗 是的,我知道设计模式中的命令模式。命令模式是一种行为型设计模式,它将请求封装成一个对象,从而允许使用不同的请求、队列或日志来参数化其他对象。命令模式还支持撤销操作,并且可以提供事务的实现…

探讨uniapp的网络通信问题

uni-app 中有很多原生的 API,其中我们经常会用到的肯定有:uni.request(OBJECT) method 有效值 注意:method有效值必须大写,每个平台支持的method有效值不同,详细见下表。 success 返回参数说明 data 数据说明 最终…

气液固三相线识别—Langmuir部分复现

关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material

c#和pdf.js实现分片预览pdf

源码如下&#xff1a; /// <summary>/// 文件处理/// </summary>[RoutePrefix("api/fs")]public class FileStoreController : ApiController{/// <summary>/// 文件预览/// </summary>/// <param name"filepath">文件路径…

【数据结构OJ题】移除链表元素

原题链接&#xff1a;https://leetcode.cn/problems/remove-linked-list-elements/description/ 1. 题目描述 2. 思路分析 我们可以定义一个结构体指针变量cur&#xff0c;让cur一开始指向头结点&#xff0c;同时定义一个结构体指针prev&#xff0c;令prev初始化为空指针NULL…

基于长短期神经网络LSTM的碳排量预测,基于LSTM的碳排放量预测

目录 背影 摘要 LSTM的基本定义 LSTM实现的步骤 基于长短期神经网络LSTM的碳排放量预测 完整代码: 基于长短期神经网络LSTM的碳排放量预测,基于LSTM的碳排放量预测资源-CSDN文库 https://download.csdn.net/download/abc991835105/88184632 效果图 结果分析 展望 参考论文 背…

DIP:《Deep Image Prior》经典文献阅读总结与实现

文章目录 Deep Image Prior1. 方法原理1.1 研究动机1.2 方法 2. 实验验证2.1 去噪2.2 超分辨率2.3 图像修复2.4 消融实验 3. 总结 Deep Image Prior 1. 方法原理 1.1 研究动机 动机 深度神经网络在图像复原和生成领域有非常好的表现一般归功于神经网络学习到了图像的先验信息…

Python解决-力扣002-两数相加

两数相加&#xff1a;链表表示的逆序整数求和 在这篇技术博客中&#xff0c;我们将讨论一个力扣&#xff08;LeetCode&#xff09;上的编程题目&#xff1a;两数相加。这个问题要求我们处理两个非空链表&#xff0c;它们表示两个非负整数。每个链表中的数字都是逆序存储的&…

Redis——String类型详解

概述 Redis中的字符串直接按照二进制的数据存储&#xff0c;不会有任何的编码转换&#xff0c;因此存放什么样&#xff0c;取出来的时候就什么样。而MySQL默认的字符集是拉丁文&#xff0c;如果插入中文就会失败 Redis中的字符串类型不仅可以存放文本数据&#xff0c;还可以存…

通过Python爬虫提升网站搜索排名

目录 怎么使用Python爬虫提升排名 1. 抓取竞争对手数据&#xff1a; 2. 关键词研究&#xff1a; 3. 网页内容优化&#xff1a; 4. 内部链接建设&#xff1a; 5. 外部链接建设&#xff1a; 6. 监测和调整&#xff1a; 需要注意哪些方面 1. 合法性和道德性&#xff1a; …

VB+SQL期刊信息管理系统设计与实现

摘 要 本次毕业设计课题为“期刊信息管理系统”,该系统在正常运营中总是面对大量的读者信息、期刊信息以及两者相互作用产生的借刊信息,还刊信息。因此需要对读者资源、期刊资源、借刊信息、还刊信息进行管理,及时了解各个环节中信息的变更,有利于提高管理效率。 此次毕…

阿里三年功能测试的一些感悟

一、前言 功能测试是测试工程师的基础功&#xff0c;很多人功能测试还做不好&#xff0c;就想去做性能测试、自动化测试。很多人对功能测试的理解就是点点点&#xff0c;如何自己不用心去悟&#xff0c;去研究&#xff0c;那么你的职业生涯也就停留在点点点上了。在这里&#…

Flv格式视频怎么转MP4?视频格式转换方法分享

FLV格式的视频是一种早期的视频格式&#xff0c;不支持更高的分辨率和比特率&#xff0c;这意味着视频的清晰度和质量受限制&#xff0c;无法很好地保留细节和质量&#xff0c;这种格式的视频已经逐渐被更高质量的视频格式所替代&#xff0c;例如MP4格式&#xff0c;不仅具有很…

Java基础(七)排序算法

排序 1. 冒泡排序 >> 冒泡排序的思想 冒泡排序是一种简单的排序算法&#xff0c;其基本思想是通过多次遍历待排序序列&#xff0c;依次比较相邻的元素并交换位置&#xff0c;使得每次遍历后最大&#xff08;或最小&#xff09;的元素冒泡到序列的末尾。具体步骤如下&a…