由一个整形数组的重复赋初值出错而想到的数组初始化规则
来源:互联网 发布:js canvas 画图 编辑:程序博客网 时间:2024/04/19 12:20
一位同学我问了一下以下代码为什么会出错,一开始我也没想明白其代码无法编译的原因。
错误代码如下:
代码1#include<stdio.h>void change(int * test){ test[] = {5,6,7,8};}int main(){ int i; int test[] = {1,2,3,4}; change(test); for(i = 0; i < 4; i++) { printf("a[%d] = %d\n",i,a[i]); } return 0;}
正确代码如下:
代码2#include<stdio.h>void change(int * test){ int i; for(i = 0; i < 4; i++) { test[i] = i + 5; }}int main(){ int i; int test[] = {1,2,3,4}; change(test); for(i = 0; i < 4; i++) { printf("a[%d] = %d\n",i,a[i]); } return 0;}
代码1想实现一个简单的替换,即:将已经赋初值为1,2,3,4的整形数组test经过change函数存放5,6,7,8;
当实际参数test传到函数change函数的形式参数test中时,形式参数和实际参数同时指向一块内存,即:存放了1,2,3,4的数组test所占的内存;
下面看看代码3
代码3#include<stdio.h>int main(){ int i; int b[]; b[] = {1,2,3,4}; for(i=0;i<4;i++) { printf("%d ",b[i]); } printf("\n"); return 0;}
我们发现代码3会和代码1报同样的错误;
恍然大悟了一句话:
数组只能在数组定义的同时初始化!!!
0 0
- 由一个整形数组的重复赋初值出错而想到的数组初始化规则
- 创建一个10个元素的数组赋初值,由后往前输出,在加倍输出
- 数组赋一样的初值memset()函数
- 由数组初始化想到的线程堆栈问题。
- 给数组赋初值
- 给数组赋初值
- 增加一个数组并赋初值,输出按成绩排序后的同学的名单
- 增加一个数组并赋初值,输出按同学姓名排序后的成绩单
- 动态二维数组的申请、赋初值、使用、释放空间
- 初始化(赋初值)的重要性
- 变量的初始化和赋初值
- 在一个整形数组中去掉重复的数字
- 请把一个整形数组中重复的数字去掉
- 把一个整形数组中重复的数字去掉
- 关于数组的初值
- 创建一个public static final 类型的map 并能赋初值,并且只能在初始化的时间赋值,而不能中途修改它的值
- 由C数组array[-1]想到的
- 从java的数组初始化想到的
- 虚拟机下的Ubuntu如何ping通Linux开发板
- Web项目配置图文教程 IDEA
- PHP与MySQL程序设计读书笔记(二)
- python 正则表达式 re模块
- PostgreSQL学习手册(PL/pgSQL过程语言)
- 由一个整形数组的重复赋初值出错而想到的数组初始化规则
- 网站分析(十)
- Spring Note--IOC
- 漫谈OI中的群论入门
- 【集合框架】2. List容器
- 后序遍历 非递归方法 (利用辅助节点r)
- Java的IO之字符流(Reader)
- Spring Note--AOP
- Linux基础教程——LVM逻辑卷基本操作流程(附图)