c++中char数组初始化后在没有赋值的位置为什么显示为a
C语言里面的栈区存放的变量(局部变量,函数的形参)是不会自动清零,所以在内存a[4]上,是什么就是什么,你的内存当时刚好是个'a'。会对内存清零的内存块是BSS段,既未初始化的全局变量。
#includevoid main(){char c[6]={"hello"};printf("%s
",c);c[0]='A'; // 仅对第一位元素赋值,它并不影响其后面的字符 printf("%s
",c);c[1]='B'; // 同理 printf("%s
",c);}
因为char数组未赋值前,系统会令数组指针随机的指向任意一块可利用的地址。而这块可利用的地址也许在很久以前存储的字符为‘a’
仔细检测下程序,cha[3]是否在其他地方赋值过。或者cout << cha[3]之前还有其他的输出。
字符串数组初始化:指定的部分按指定的字符初始化,剩余部分都初始化成'\0'.
编译器的问题吧,我用的VS2008输出的是ASCII值为0所对应的空值(也就是'\0'或者说是NUL,不是空格)
另外,GCC也一样输出空值
你的应该是要这样的:
char cha[100] = {'0','1','2',0};
cout<<cha;
你的cout<<cha[3]表示输出cha[3]这一个字符,这是这个数组里的第四个元素(你没有将它初始化)
char不是赋值0.而int没赋值部分才是赋值为0
c++ vector<char> 问题
很清楚了 for(size_t j = 0 ; j < sizeof(a) ; j++)--- 不了解你的程序时是干嘛 while(a[5]=getchar()) \/\/ 这里越界了 ,只有a[0] 到 a[4]既然是每次读取一个char,为啥要弄个数组呢 include "stdafx.h"include <iostream> include <fstream> include<string> include<vector...
c++指针数组初始化问题
指向整型数的指针数组 int *p1[] = {NULL, NULL};是没有问题的。原因在于,你申请指向字符的指针数组,数组中的元素是字符串,指针数组保存的是字符串首地址;而对于其他常量,你无法把地址给回,自然无法给指针数组赋值。而我给的NULL是一个空指针,就可以赋给指针数组了。指针数组,元素只能保存...
C++中如果一个int型变量没有给具体值,为什么用cout输出时会是一个确 ...
通常情况下,int、double、char等类型的变量不初始时其值是不定的,而数组、字串则可能是0或NULL或许也是不定的。所以你遇到的这种情况一点都不奇怪。正因为如此,C\/C++规定变量都得先定义(初始化)再使用。这里说的“不定”或“随机”并不是指你运行一次就有不同的结果,而是指在这台机器上是这...
C语言数组初始化,赋值和'\\0'相关的问题
你如果在定义的时候就初始化,比如 char array[10] = "Hello";int a[10] = {1};就已经将没设置值的元素默认置0。比如array的 5-9 , a 的 1-9 (从0开始)初始化是个好习惯 定义时候不初始化,而且不是全局变量,结果就未知了。
...vc++ , char char* char[512] char数组 处理,内存访问没有权限。内存...
char * szIeName=new char[128*512];memset(szIeName,0,128*512*sizeof(szIeName));你初始化的内存是你申请内存的4倍(自己好好想想为什么是4倍)。改成下面这样 char * szIeName=new char[128*512];memset(szIeName,0,128*512*sizeof(char));
用字符串初始化char型数组和字符指针的问题
所以如果a = "hello";就是把字符串常量"hello"的首地址赋给地址常量a,这是不允许的。而如果写成char a[8] = "hello";这就是在定义数组a的时候就对其初始化,把"hello"串的每个字符赋值给数组a的元素。这是合理的。并不是非得必须在定义的时候初始化,也可以定义之后再初始化,比如:char a[...
C++ const char* 和 char*区别
char *都一样, 说明定义指向字符类型数据的指针, const修饰表明这个指向的数据类型(char型)的数据是只读的,或者说是常量不允许修改,仅此区别,如果在程序中用p去修改了数据则会在编译时报错
c语言,比如我定义一个字符数组char a[100]; 然后我往这个数组内输入字符...
char a[100]; 只是向系统申请100个字节空间;初始化全部为0 在程序中可以用完,也可以只用其中1个 for (i=0;i<37;i++){scanf("%c",&a[i]); \/\/这样只要输入38个字符就结束了 \/\/或者用这个也行 a[i]=getchar();}
变量char**怎么初始化为大小可变数组
分配行指针数组空间 再动态的获得相应的每行的数据个数num2(各行可不同)为每行分配相应的空间,进行数据存储 应用完成后,要先释放每行的指针 再释放二维指针 参考代码:include <stdlib.h> \/\/malloc needvoid main(){ char **pp=NULL ; \/\/只有在定义时的赋值,才叫初始化,其他位置都叫赋...
C语言中怎么把一维数组初始化都为0,
1、首先,需要定义数组,数组常用类型有int型,float浮点型,char字符型等,输入即可定义。2、然后就是数组的名称了,可以自己定义,但是要符合相应规则。3、一般在数组定义阶段就确定数组的大小,输入数字即为数组大小,如下图所示。4、然后,可以对数组进行初始化,在花括号{}中输入即可。5、如果初始化...