今天上午学习了shell的一些基本用法,下午听老师讲了c语言的基本数据类型。
关于shell
shell就是个命令行解释器,作用就是遵循一定的语法将输入的命令加以解释并传给系统。
shell可以启动,挂起,停止甚至是编写一些程序。
shell是用户使用Linux的桥梁。
shell写的程序是脚本程序,也在vim中编写。
必须以#!/bin/sh开头,要使脚本可运行:chmod 777 filename(给权限),之后./filename执行脚本。
例、
#!/bin/sh
#对变量赋值
a="hello world"
#打印变量a的内容
echo "a is:"
echo $a
输出
a is:
hello world
野指针
1.什么是野指针?
野指针指向一个已删除的对象或未申请访问受限内存区域的指针。与空指针不同,野指针无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。对野指针进行操作很容易造成程序错误。
2.产生的原因
(1)指针在定义时没有初始化。
(2)指针被释放时没有被置空。
(3)指针操作超越变量作用域。
3.危害
指针指向的内容已经无效了,而指针没有被置空,解引用一个非空的无效指针是一个未被定义的行为,就是说不一定是段错误,那就很难找到这个错误点在哪儿,很难查出问题原因,调试时间就会加长,很麻烦。
4.解决方法
(1)初始化指针时将其置为NULL,在对其操作。
(2)释放指针时,将其置为NULL。
(3)最好的办法就是养成良好的编程习惯。
写的一些作业
1.题目:编写程序,打印出9×9乘法表
#include <stdio.h>
int main()
{
int i,j;
for(i=1;i<=9;i++)
{
for(j=1;j<=i;j++)
{
printf("%d*%d=%d\t",i,j,i*j);
}
printf("\n");
}
return 0;
}
2.题目:编写程序,实现strcmp()相同功能myStrcmp()函数
#include <stdio.h>
int myStrcmp(char a[],char b[])
{
int i=0,t;
while(a[i]!='\0'||b[i]!='\0')
{
if(a[i]==b[i])
{
t=0;
}
else if(a[i]>b[i])
{
t=1;
}
else
{
t=-1;
}
if(t!=0)
{
break;
}
i++;
}
return t;
}
int main()
{
int q=0;
char a[100],b[100];
fgets(a,100,stdin);
fgets(b,100,stdin);
q=myStrcmp(a,b);
printf("若输出0为相等,1为第一个大,2为第二大 %d\n",q);
return 0;
}