main函数

c++指针作为形参常见问题--1

邮差的信 提交于 2020-01-28 03:45:53
【错误案例1】 错误原因,函数createCharLink中定义的指针p虽然是在堆上申请的内存空间,但是函数createCharLink没有返回值,所以main函数中的指针p未定义,因此编译未通过。解决办法是,把指针p的声明放在main函数体外,紧跟结构体charlink的定义之后,并且仅仅在createCharLink函数中定义它。或者,把createCharLink更改为返回值为CharLink *类型的函数。 #include<iostream> #include<cstddef> #include<cstdio> #include<cstdlib> #include<cstring> using namespace std; typedef struct charlink { char ch; struct charlink *next; }CharLink; //CharLink *p; //在此处,取消注释这一句 void createCharLink(const char *str1) { CharLink *p = (CharLink*)malloc(sizeof(CharLink)); //删除或者注释掉这一句 // p = (CharLink*)malloc(sizeof(CharLink)); //修改办法,取消注释这一句 p->next=0; while(

Java8笔记(2)

自闭症网瘾萝莉.ら 提交于 2020-01-27 17:54:20
Java8笔记(2) 用流收集数据 收集器 函数式编程相对于指令式编程的一个主要优势:你只需指出希望的结果——“做什么”,而不用操心执行的步骤——“如何做” 收集器用作高级归约 收集器非常有用,因为用它可以简洁而灵活地定义 collect 用来生成结果集合的标准。更具体地说,对流调用collect 方法将对流中的元素触发一个归约操作(由 Collector 来参数化) 一般来说, Collector 会对元素应用一个转换函数(很多时候是不体现任何效果的恒等转换,例如 toList ),并将结果累积在一个数据结构中,从而产生这一过程的最终输出 预定义收集器 预定义收集器的功能,也就是那些可以从 Collectors类提供的工厂方法(例如 groupingBy )创建的收集器。它们主要提供了三大功能 将流元素归约和汇总为一个值 元素分组 元素分区 归约和汇总 在需要将流项目重组成集合时,一般会使用收集器( Stream 方法 collect的参数)。再宽泛一点来说,但凡要把流中所有的项目合并成一个结果时就可以用。这个结果可以是任何类型,可以复杂如代表一棵树的多级映射,或是简单如一个整数 public class M1 { public static void main(String[] args) { List<Dish> menu = Data.create(); // 利用

Python程序执行顺序

冷暖自知 提交于 2020-01-27 17:25:38
#示例代码基于py3.6 一直对Python程序的执行顺序有些疑惑,例如python程序是顺序执行的,那怎么还有main函数的出现呢? 在查阅了资料后,参见 这里 后,算是有点明白了: 1.python程序是顺序执行的,而C++中main()是程序的入口 例如以下代码,结果如注释所示,这里虽然有个main函数,但是最先输出的不是“main”而是“test1”: 1 #test1 2 print ("test1") 3 def Fun(): 4 print ("Fun") 5 def main(): 6 print ("main") 7 Fun() 8 if __name__ == '__main__': 9 main() 10 ''' 11 test1 12 main 13 Fun 14 ''' 2.一段python程序以py文件运行时,文件属性__name__为main;作为模块导入时,文件属性__name__为文件名: 1 #test.py 2 def Fun(): 3 print ("Fun") 4 if __name__ == '__main__': 5 print ("main") 6 Fun() 7 ''' 8 main 9 Fun 10 ''' 3.总结 C++中一main函数为执行的起点;Python中首先执行最先出现的非函数定义和非类定义的没有缩进的代码

20小时快速入门go语言视频 - Day1

喜你入骨 提交于 2020-01-27 13:21:03
笔记声明 本人自学golang的笔记,笔记内容均是来源于《黑(和)马(谐)程序员》免费视频教程,只是学习的记录,不用于任何商业用途。 http://yun@itheima.com/course/302.html 把 @ 换成 . 即可 一、第一个go程序 把程序类比于商场 //1.go语言以包作为管理单位 //2.每个文件都必须声明包 //3.程序必须有一个main包 //4.一个go工程中,只能有一个main函数和main包 package main //main表示包的标识 import "fmt" //程序的入口,是从这里开始调用的 func main() { fmt.Println("你好 go") } 1.1 入口 可以进入商场的入口 一个go工程有且只有一个入口函数 main() 1.2 干活 调用函数、执行函数 来源: CSDN 作者: 蓝色玛格丽特 链接: https://blog.csdn.net/zhangyibei2008/article/details/104089383

C语言中define的用法

风格不统一 提交于 2020-01-27 10:24:26
define是C语言中的预处理命令,它用于宏定义,可以提高源代码的可读性,为编程提供方便。 预处理命令以“#”号开头,如包含命令#include,宏定义命令#define等。一般都放在源文件的前面,它们称为预处理部分。 所谓预处理是指在进行编译之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。 宏的定义 在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。 在C或C++语言中,“宏”分为有参数和无参数两种。 无参数宏定义 无参数宏就是不带参数,其定义的一般形式为:   #define 标识符 字符串   “标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。   例如:   #define PI 3.14 它的作用是指定标识符PI来代替常数3.14。在编写源程序时,所有用到3.14的地方都可用PI代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用3.14去置换所有的宏名PI,然后再进行编译。

go并发编程by examples

女生的网名这么多〃 提交于 2020-01-27 00:23:18
转载自本人独立博客: https://liushiming.cn/2020/01/21/concurrent-programming-in-go-by-examples/ 概述 并发是go的一个吸引开发者的特性,也是一个难点,以下整理自我在公司的一个内部分享,全部都是以示例的形式进行说明,有兴趣跑一下就掌握了。 本文中的代码在 github 上也有。 并发 vs 并行 并发(Concurrency)vs 并行(Parallelism)的区别 你吃饭吃到一半,电话来了,你一直到吃完了以后才去接,说明你不支持并发也不支持并行。 你吃饭吃到一半,电话来了,你停了下来接了电话,接完后继续吃饭,这说明你支持并发。 你吃饭吃到一半,电话来了,你一边打电话一边吃饭,这说明你支持并行。 golang同时支持并行和并发,并行即使用多个cpu同时运算(默认使用所有cpu,可由runtime.GOMAXPROCS(n int)指定) func main() { runtime.GOMAXPROCS(runtime.NumCPU()) for i := 0; i < 10; i++ { go func(i int) { fmt.Println("i: ", i) }() } time.Sleep(1 * time.Second) } goroutine 只需使用go关键字即可启动一个goroutine

java -- 集合 - 3( 泛型 )

偶尔善良 提交于 2020-01-26 19:49:13
第三章 : 泛型 3.1 、泛型概述 在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这是他们会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这是必须采用类型转换。 import java . util . ArrayList ; import java . util . Collection ; import java . util . Iterator ; public class GenericDemo { public static void main ( String [ ] args ) { show01 ( ) ; show02 ( ) ; } // 创建集合对象不使用泛型, // 好处:集合不使用泛型,默认类型就是Object类型,可以存储任意任意类型的数据 // 弊端:不安全,可能会引发异常 private static void show01 ( ) { ArrayList list = new ArrayList ( ) ; list . add ( "abc" ) ; list . add ( 10 ) ; // 使用迭代器遍历list集合 //获取迭代器 Iterator it = list . iterator ( ) ; // 使用迭代器中的方法hasNext和next遍历集合。 while (

day12_Object类、常用API

徘徊边缘 提交于 2020-01-26 10:51:49
Object类 概述 java.lang.Object 类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类(包括数组)都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类, 那么默认则继承自Object类。例如 public class MyClass /*extends Object*/ { // ... } 根据JDK源代码及Object类的API文档,Object类当中包含的方法有11个。今天我们主要学习其中的2个: public String toString() :返回该对象的字符串表示。 public boolean equals(Object obj) :指示其他某个对象是否与此对象“相等”。 toString方法 方法摘要 public String toString() :返回该对象的字符串表示。 下面我们以代码举例的方式来说明toString方法。首先我们自定义Person类,代码如下 package demo01; public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = name; this.age = age

c语言计算e的x次方的值

若如初见. 提交于 2020-01-26 10:29:24
首先,我们需要知道公式 e x =1+x/1!+x 2 /2!+x 3 /3!+…… 我们要用到函数pow(x,y),其作用是求x y ,这个函数需要头文件math.h,下面给出源码。 # include <stdio.h> # include <math.h> int main ( ) { double e , d , i , l = 1.0 , x ; scanf ( "%lf" , & x ) ; for ( i = 1 ; i < 100 ; i ++ ) { l * = i ; d = pow ( x , i ) ; e + = d / l ; } printf ( "%lf" , e + 1 ) ; return 0 ; } 希望对大家有所帮助 >_< 来源: CSDN 作者: V(●—●)V 链接: https://blog.csdn.net/qq_45861670/article/details/104047975

Linux C语言:main函数的参数int argv 和 char* argc [ ]

霸气de小男生 提交于 2020-01-26 05:03:50
1. int argv argv 是 argument vector的缩写, 表示传入main函数的参数序列或指针, 并且第一个参数argv[0]一定是程序的名称, 并且包含了程序所在的完整路径, 所以确切的说需要输入的main函数的参数个数是argc-1个。 例: ./main.out 的 argv=1 ./main.out -l 的 argv=2 ./main.out -l-a 的 argv=3 2. char* argc [ ] *argv[ ]: 指针数组, 用来存放指向你的字符串参数的指针, 每一个元素指向一个参数。 其中argv[0] 指向程序运行的全路径名, argv[1] 指向在DOS命令行中执行程序名后的第一个字符串, argv[2] 指向执行程序名后的第二个字符串, argv[argc]为NULL。 例: # include <stdio.h> int main ( int argv , char * argc [ ] ) { printf ( "argv is %d\n" , argv ) ; int i ; for ( i = 0 ; i < argv ; i ++ ) { printf ( "argc[%d] is %s\n" , i , argc [ i ] ) ; } return 0 ; } 运行 ./main3.out -l -a 结果 argv