一.欢迎来到我的酒馆
讨论c语言中,我们常写的Hello world之间的区别。
二.HelloWorld
1.int main()
#include <stdio.h>
int main(){
printf("Hello Wolrd!");
return 0;
}
2.int main(void)
#include <stdio.h>
int main(void){
printf("Hello Wolrd!");
return 0;
}
在c11或更高的版本中,int main()和int main(void)是一样的,没有区别。
3.预测下面程序的结果。
#include <stdio.h>
int main(){
printf("Hello Wolrd!\n");
static int i = 5;
if(i--){
main(12,"qwer",'男');
}
return 0;
}
输出:
Hello Wolrd!
Hello Wolrd!
Hello Wolrd!
Hello Wolrd!
Hello Wolrd!
Hello Wolrd!
规律:在c语言中,如果一个函数在定义的时候没有指定任何形参,调用它的时候可以写任何数量的实参或者不写实参。
4.1更进一步
#include <stdio.h>
int main(int args,char* argv[]){
printf("Hello Wolrd!\n");
return 0;
}
argc和argv这两个参数被称为"命令行参数"。
形参args表明从命令行传入的实参个数。
形参argv是一个指针数组,代表了从命令行传入的实参。
编译一下面的程序,
#include<stdio.h>
int main(int args,char*argv[]){
int i;
for(i=0;i<args;i++)
{
printf("%s\n",argv[i]);
}
return 0;
}
Object | value |
---|---|
argc | 4 |
argv[0] | “./HelloWorld” |
argv[1] | “11” |
argv[2] | “22” |
argv[3] | “33” |
4.2
#include <stdio.h>
int main(int args,char** argv){
printf("Hello Wolrd!\n");
return 0;
}
char**argv和char *argv[]区别??
没有区别。
只不过数据类型不一样,char **argv是二级指针类型,char*argv[]是指针数组类型。
就比如,char *** args和 char **argv[],没有区别,数据类型不同罢了。
4.3
#include<stdio.h>
int main(int args,char*argv[],char **env_var_ptr){
printf("Hello Wolrd!\n");
return 0;
}
第三个参数char **env_var_ptr提供了一个环境变量。
#include<stdio.h>
int main(int args,char*argv[],char **env_var_ptr){
int i;
for(i=0;i<args;i++){
printf("%s\n",argv[i]);
}
i=0;
while(*env_var_ptr != NULL){
printf("env var %d=%s\n",i++,*(env_var_ptr++));
}
return 0;
}
输出:
./HelloWorld
env var 0=XDG_VTNR=1
env var 1=SSH_AGENT_PID=1833
env var 2=XDG_SESSION_ID=1
env var 3=HOSTNAME=192.168.93.131
env var 4=IMSETTINGS_INTEGRATE_DESKTOP=yes
env var 5=VTE_VERSION=5204
env var 6=TERM=xterm-256color
env var 7=SHELL=/bin/bash
env var 8=XDG_MENU_PREFIX=gnome-
env var 9=HISTSIZE=1000
env var 10=GNOME_TERMINAL_SCREEN=/org/gnome/Terminal/screen/808648c6_1c07_4463_8b2e_7bd6b79a2ff7
env var 11=QT_GRAPHICSSYSTEM_CHECKED=1
env var 12=IMSETTINGS_MODULE=none
env var 13=USER=user
env var 14=LS_COLORS=rs=0:di=38;5;27:ln=38;5;51:mh=44;38;5;15:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=05;48;5;232;38;5;15:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;34:.tar=38;5;9:.tgz=38;5;9:.arc=38;5;9:.arj=38;5;9:.taz=38;5;9:.lha=38;5;9:.lz4=38;5;9:.lzh=38;5;9:.lzma=38;5;9:.tlz=38;5;9:.txz=38;5;9:.tzo=38;5;9:.t7z=38;5;9:.zip=38;5;9:.z=38;5;9:.Z=38;5;9:.dz=38;5;9:.gz=38;5;9:.lrz=38;5;9:.lz=38;5;9:.lzo=38;5;9:.xz=38;5;9:.bz2=38;5;9:.bz=38;5;9:.tbz=38;5;9:.tbz2=38;5;9:.tz=38;5;9:.deb=38;5;9:.rpm=38;5;9:.jar=38;5;9:.war=38;5;9:.ear=38;5;9:.sar=38;5;9:.rar=38;5;9:.alz=38;5;9:.ace=38;5;9:.zoo=38;5;9:.cpio=38;5;9:.7z=38;5;9:.rz=38;5;9:.cab=38;5;9:.jpg=38;5;13:.jpeg=38;5;13:.gif=38;5;13:.bmp=38;5;13:.pbm=38;5;13:.pgm=38;5;13:.ppm=38;5;13:.tga=38;5;13:.xbm=38;5;13:.xpm=38;5;13:.tif=38;5;13:.tiff=38;5;13:.png=38;5;13:.svg=38;5;13:.svgz=38;5;13:.mng=38;5;13:.pcx=38;5;13:.mov=38;5;13:.mpg=38;5;13:.mpeg=38;5;13:.m2v=38;5;13:.mkv=38;5;13:.webm=38;5;13:.ogm=38;5;13:.mp4=38;5;13:.m4v=38;5;13:.mp4v=38;5;13:.vob=38;5;13:.qt=38;5;13:.nuv=38;5;13:.wmv=38;5;13:.asf=38;5;13:.rm=38;5;13:.rmvb=38;5;13:.flc=38;5;13:.avi=38;5;13:.fli=38;5;13:.flv=38;5;13:.gl=38;5;13:.dl=38;5;13:.xcf=38;5;13:.xwd=38;5;13:.yuv=38;5;13:.cgm=38;5;13:.emf=38;5;13:.axv=38;5;13:.anx=38;5;13:.ogv=38;5;13:.ogx=38;5;13:.aac=38;5;45:.au=38;5;45:.flac=38;5;45:.mid=38;5;45:.midi=38;5;45:.mka=38;5;45:.mp3=38;5;45:.mpc=38;5;45:.ogg=38;5;45:.ra=38;5;45:.wav=38;5;45:.axa=38;5;45:.oga=38;5;45:.spx=38;5;45:*.xspf=38;5;45:
env var 15=GNOME_TERMINAL_SERVICE=:1.117
env var 16=SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
env var 17=USERNAME=user
env var 18=SESSION_MANAGER=local/unix:@/tmp/.ICE-unix/1704,unix/unix:/tmp/.ICE-unix/1704
env var 19=GNOME_SHELL_SESSION_MODE=classic
env var 20=PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/user/.local/bin:/home/user/bin
env var 21=MAIL=/var/spool/mail/user
env var 22=DESKTOP_SESSION=gnome-classic
env var 23=QT_IM_MODULE=ibus
env var 24=XDG_SESSION_TYPE=x11
env var 25=PWD=/home/user/code/c/HelloWorld
env var 26=XMODIFIERS=@im=ibus
env var 27=LANG=en_US.UTF-8
env var 28=GDM_LANG=en_US.UTF-8
env var 29=GDMSESSION=gnome-classic
env var 30=HISTCONTROL=ignoredups
env var 31=XDG_SEAT=seat0
env var 32=HOME=/home/user
env var 33=SHLVL=4
env var 34=GNOME_DESKTOP_SESSION_ID=this-is-deprecated
env var 35=XDG_SESSION_DESKTOP=gnome-classic
env var 36=LOGNAME=user
env var 37=XDG_DATA_DIRS=/home/user/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
env var 38=DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-Xtr75n7bbw,guid=e72e91e41678ee79d004075864991657
env var 39=LESSOPEN=||/usr/bin/lesspipe.sh %s
env var 40=WINDOWPATH=1
env var 41=XDG_RUNTIME_DIR=/run/user/1000
env var 42=DISPLAY=:0
env var 43=XDG_CURRENT_DESKTOP=GNOME-Classic:GNOME
env var 44=COLORTERM=truecolor
env var 45=_=./HelloWorld
env var 46=OLDPWD=/home/user/code/c