【黑马程序员】C语言学习笔记之错题集
来源:互联网 发布:天天特价淘宝网衣服 编辑:程序博客网 时间:2024/06/06 02:21
--------------------------------------------IOS期待与您交流!--------------------------------------------
一、数组赋值
对于数组的赋值有多种方式:
int a[] = {1, 2, 3};
int b[3] = {1, 2, 4};
int c[4] = {2, 6};// {2, 6, 0, 0}
int d[5] = {[1] = 4, [3] = 9}; // {0, 1, 0, 9, 0}
以上两种情况都会默认把没有赋值的元素赋值为0
而对以下情况就会随机赋值给未赋值的元素
元素个数是常量时:
int e[10];
e[0] = 3;
e[8] = 4;
元素个数是变量时:
int f = 8;
int g[f];
g[2] = 8;
b[6] = 9;
注意:元素个数是变量时不能这么赋值,编译器会报错:
int f = 8;
int g[f] = {0, 0, 8, 0, 0, 0, 9, 0, 0, 0};
总结:
* 数组在定义的同时并初始化的时候,会给未赋值的元素赋默认值
* 数组先定义后初始化时,不会给未赋值的元素赋默认值,而是随机的赋值
二、字符串输出结束问题
#include <stdio.h>int main(){ char c1[] = {'a', 'b'}; char c2[] = {'c', 'd'}; char c3[] = {'e', 'f', '\0'}; printf("%s\n", c1); printf("%s\n", c2); printf("%s\n", c3); return 0;}输出:ab
cdab
fe
在内存中得表示如下:
分析:在给变量分配地址时,优先分配高地址给变量,先定义先分配。
输出c1时:会从c1所在的地址ffc8开始依次输出字符a、b,没有遇到\0,但是到了代码块的边界,结果输出:ab
输出c2时:会从c2所在的地址ffc6开始依次输出c、d,但是没有遇到\0,所以继续输出a、b,直到遇到代码块边界,结果输出:cdab
输出c3时:从c3所在地址ffc3开始依次输出e、f,直到遇到\0,输出结束,结果输出:ef
由分析推出:
* 在printf中%s输出字符串时,要么在遇到\0时结束,要么在遇到代码块边界结束。
待续......
--------------------------------------------IOS期待与您交流!--------------------------------------------
详细请查看:http://edu.csdn.net
0 0
- 【黑马程序员】C语言学习笔记之错题集
- 【黑马程序员】C语言学习笔记之函数(八)
- 【黑马程序员】C语言学习笔记之数组(九)
- 【黑马程序员】C语言学习笔记之指针(十一)
- 【黑马程序员】C语言学习笔记之字符串(十)
- 【黑马程序员】C语言学习笔记之枚举(十三)
- 【黑马程序员】C语言学习笔记之typedef(十五)
- 【黑马程序员】Objective-C语言学习笔记之小知识点
- 黑马程序员---C语言学习笔记之二
- 黑马程序员---C语言学习笔记之三
- 黑马程序员---C语言学习笔记之四
- 黑马程序员---C语言学习笔记之五
- 黑马程序员---C语言学习笔记之六
- 黑马程序员-------c语言学习笔记之基础知识储备
- 黑马程序员-------c语言学习笔记之流程控制
- 黑马程序员-------c语言学习笔记之数组与字符串
- 黑马程序员------c语言学习笔记之指针
- 黑马程序员--C 语言学习笔记之简介
- 分手后“在一起”的第十三天
- 如何加快网页访问速度
- 用TDD开发可能会更省时间
- WPF报表控件(折线图、柱状图、饼状图)
- 我的android(第八天)
- 【黑马程序员】C语言学习笔记之错题集
- flex编程之基础搭建
- Unity中基于高度图的地形系统总结
- Android.AsyncTask
- Linux 搭建SVN 服务器
- 如何在ios中简便地判断内存是否泄露
- ngx_event_pipe_write_to_downstream分析
- 团队建设的几点体会-----之二
- poj1700过河问题(贪心)