赞
踩
前面几篇学习了 C语言中基础问题,文章如下:
常见C语言基础说明三:static修饰的函数或变量-CSDN博客
常见C语言基础说明四:#define宏定义与 a---CSDN博客
本文继续学习 嵌入式C开发中,可能涉及的一些C语言基础问题。
有如下代码,计算运行结果:
- #include <stdio.h>
-
- void fun(int a, int b, int c)
- {
- c = a*3+b+1;
- c++;
- }
-
- int main(void)
- {
- int value = 20;
- fun(5, 7, value);
- printf("%d\n", value);
- return 0;
- }
打印结果:
20
分析如下:
这里调用函数,只是将变量 value 的值传入函数内部,向函数参数传递值,什么也改变不了。
所以,输入结果为 20。
有如下字符串拷贝代码,输入结果是多少?
- #include <stdio.h>
- #include <string.h>
-
- int main(void)
- {
- char str1[15] = "china red";
- char str2[15] = "china green";
-
- strcpy(str1, str2);
- printf("%c, %c\n", *str1, *(str1+1));
- return 0;
- }
输入结果为:
c, h
分析如下:
数组元素的访问方式:
(1) 利用下标
例如, buf[0] ,buf[1] 等等
(2) 利用指针常量访问,也就是地址法
例如, *buf, *(buf+1) 等依次类推。
这里 buf是数组的首元素的地址,*buf即取出地址中的数据,也就是 首元素数据。
(3) 利用指针法
例如,这里可以定义(一个数组元素) char类型的指针 ptr,ptr = &a,则 *ptr就是第一个元素,然后依次类推,可以访问到所以的元素。
综上所述 ,上面代码中 *str1即取出首元素,则 *(str+1) 即取出第二个元素。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。