以前对C语言的指针,一直很难应用,直到看了朱有鹏老师的C高级专题加上自己的理解,实现了一些小程序,比如下面十进制换位
ASCii码的小程序,和对于main函数的传参理解,
对内存的操作和认识提高了一大步。还有static,volatile关键字的认识和理解加深了一大步。在此谢谢朱有鹏老师。
十进制换位ASCii码:
#include
struct mi
{
char a;
char b;
char c;
char d;
char f;
char a1;
char b1;
char c1;
char d1;
char f1;
char a2;
};
void main(void)
{
struct mi s;
char *p=NULL;
int n=0,i=0,j=0;
int a[11]={46,67,66,68,55,69,78,85,91,65,97};
s.a='A';
s.b='B';
s.c='C';
s.d='D';
s.f='.';
s.a1='7';
s.b1='N';
s.c1='U';
s.d1='[';
s.f1='a';
s.a2='E';
p=(char *)&s;
for(j=0;j<12;j++,n++)
{
for(i=0;i<12;i++)
{
if(a[j]==(int)(*(p+i)))
{
a[j]=(char)(*(p+i));
printf("%c",a[j]);
}
}
if(n==10)
{
printf("\n");
n=0;
}
}
}
main函数的传参理解:
#include
#include
int main(int argc , char argv[])
{
int sum1=0,i=0,j=0,s=0;
int sum2=0;
for(i=0;i
{
printf("第%d个参数为:\n",i,argv[i]);
if(argv[i]=="+")
{
for(j=i-1;j>0;j--)
{
sum1=sum1+(int)argv[j];
}
for(s=i+1;s
{
sum2=sum2+(int)argv[j];
}
return sum1+sum2;
}
else if(argv[i]=="-")
{
for(j=i-1;j>0;j--)
{
sum1=sum1+(int)argv[j];
}
for(s=i+1;s
{
sum2=sum2+(int)argv[j];
}
return sum1-sum2;
}
else if(argv[i]=="*")
{
for(j=i-1;j>0;j--)
{
sum1=sum1+(int)argv[j];
}
for(s=i+1;s
{
sum2=sum2+(int)argv[j];
}
return sum1*sum2;
}
if(argv[i]=="/")
{
for(j=i-1;j>0;j--)
{
sum1=sum1+(int)argv[j];
}
for(s=i+1;s
{
sum2=sum2+(int)argv[j];
}
return (int)(sum1/sum2);
}
else
{
printf("参数有误,请重新输入:\n");
return -1;
}
}
//return sum;
/*if(argv[2]=="+")
{
(sizeof(argv)/sizeof(argv[0]))
return (int)argv[1]+(int)argv[2];
}
*/
}
对于嵌入式这条路,在大二暑假的时候一直找不到好的视频和切入点,直到看到了朱老师的S5PV210裸机视频,才下定决心跟着老师走
,相信会有大长进。
学完之后,发现之前自己对单片机的理解和操作更进了一步,明白宏和位运算在操作寄存器工作时的便利和重要性,对LCD。SD卡。IIC
等的操作理解更深了。在此希望有兴趣学嵌入式的有志之士可以关注下朱老师的视频,绝对物有所值哦。现在老师已经完成裸机和C高
级。正更新到UBOOT的理解和操作上了。课程分六大部分。有ARM裸机全集,UBoot和Linux内核移植,网络编程,C高级,Linux驱动开发
,嵌入式项目实战。
阅读(255) | 评论(1) | 转发(0) |