-
argc和argv参数在用命令行编译程序时有用。main( int argc, char* argv[], char **env ) 中
第一个参数,int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在VS中默认值为1。
第二个参数,char*型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。各成员含义如下:
argv[0]指向程序运行的全路径名
argv[1]指向在DOS命令行中执行程序名后的第一个字符串
argv[2]指向执行程序名后的第二个字符串
argv[3]指向执行程序名后的第三个字符串
argv[argc]为NULL
第三个参数,char**型的env,为字符串数组。env[]的每一个元素都包含ENVVAR=value形式的字符串,其中ENVVAR为环境变量,value为其对应的值。平时使用到的比较少。查看全部 -
练习1:使用函数来交换两个数的值
#include <iostream> int exchange(int *a,int *b) { int c=*a; *a=*b; *b=c; } int main(int argc,char **argv) { int x=5; int y=10; std::cout<<"交换的前:"<<"x="<<x<<","<<"y="<<y<<std::endl; exchange(&x,&y); std::cout<<"交换后的:"<<"x="<<x<<","<<"y="<<y; return(0); }
练习2:利用递归来求一个数的阶乘
int fact(int n) { if(n==1) { return 1; } else { return n * fact(n-1); } } int main(int argc,char **argv) { int x = 5; int res = fact(x); std::cout<<"5!="<<res; return 0; }
查看全部 -
https://visualstudio.microsoft.com/zh-hans/
查看全部 -
//自动变量,在作用域结束的时候就销毁了
//栈数据结构,先进后出
//在C++中,自动变量是通过栈管理的
//栈内存:随着作用域结束,变量被销毁/回收
//堆内存:不会随着作用域结束回收内存。分配内存必须要手动释放
分配内存用的是malloc函数
//malloc返回值是一个指针,指向分配出来的内存的首地址
//在内存中分配了一个int指针,然后在堆内存中分配4个字节的空间,把堆内存空间分配的首地址赋值给栈内存中的int指针
int * p = (int *)malloc(4);
//堆内存的头文件
#include <stdlib.h>
//使用p指针操作这个内存,这个内存不会在程序执行到大括号后就销毁,它会一直被保留,我们可以在大括号之外访问这片内存
//使用完堆内存变量后需要释放变量
//用free函数释放变量,传入参数为指向这块堆内存的指针
查看全部 -
C++兼容C,不用担心出现问题
需要额外注意,资源回收,因为没有GC垃圾回收。
都是灵活的语言
查看全部 -
argc 参数个数
argv参数数组
查看全部 -
整形
有符号的数据类型 无符号的数据类型 浮点型
类型名称 数据长度 类型名称 数据长度 类型名称 数据
char 1 unsigned char 1 float 4
short 2 unsigned short 2 double 8
int 4 unsigned int 4
long 4 unsigned long 4
long long 8 unsigned long long 8
查看全部 -
#include <stdio.h>
int main()
{
int a;//声明变量
const int c = 10;//声明常量
return 0;
}
查看全部 -
#include<stdio.h>
int main(int argc,char**argv)
{
int array[100];
for(int i=0;i<100;i++){
printf("array[%d]: %d\n", i, array[i]);
}
}查看全部 -
if(a == 12){
b = a - b;
}
else{
b = a + b;
b = a - b;
}等价于:
do {
if(a == 12){
break;
}
b = a + b;
} while(false);
b = a - b;在这个语句中,while(false)永远不会运行这个循环,用于延时设计。
while(true)会让程序一直执行,死循环。
查看全部 -
int length = 100; int array[length]; int target = 10; for(int i=0;i<length;i++) { if(array[i] == target) { continue; } printf("array[%d]: %d\n", i, array[i]); } 代码块预览复制 在这段程序中,当 array[i] == target 的时候,会执行 continue 语句,跳出本次循环,而进入下一次循环,所以本次的 printf 不会被打印,而下一次会继续打印。查看全部
-
用C++向世界问好
#include <stdio.h> //标准输入输出 int main(int argc,char **argv) //主函数,是程序的入口函数。一个程序里有且只有一个main函数 { printf("Hello World!\n"); //stdio.h中包含printf功能 return 0; }
C++
#include <iostream> //iostream是C++里的io流的头文件 int main(int argc,char **argv) { std::cout << "Hello World!\n" << std::endl;//C++的输出风格 return 0; }
查看全部 -
指针变量:存放变量在内存中的地址。定义一个指针后,它里面存放的是随机地址,此时它是野指针,操作野指针非常危险,所以要给指针赋值。
取地址符:&
例如:int a=10;
int *p; //这个写法就属于野指针,正确做法是将指针赋值为空int*p=nullptr,空指针意思是这个指针不指向任何地方。
p=&a; //此时指针变量p里存放的就是变量a的地址
指针运算符:*(用来取得某个地址上的数据)
查看全部 -
c++无GC机制(自动垃圾回收机制),编程中不但要考虑资源的分配,还要考虑资源的回收,要记得手动释放资源。是密集运算,视频流媒体,人工智能等对性能要求非常高的领域几乎唯一的选择,不适用Web服务器,界面开发,移动应用开发等领域,
查看全部 -
事实上,在这个问题里,我们需要的是一种基础数据类型之外的数据类型,这种数据类型指代了一个学生,其中包含两个部分,第一个部分用来存放学生的数学成绩,第二个部分用来存放学生的英语成绩。
C++ 为我们提供了这样一种自定义数据类型的功能,叫做结构体。你可以定义一个结构体,用几种相同或者不同的基本数据类型的组合自定义这个数据类型中的内容。这样,我们就可以完成数据"打包"的目标。
查看全部
举报