数组中的独立变量我们称为索引变量(indexed variable) 也称下标变量(subscripted variable) 或元素(element)
一旦索引表达式的求值结果在数组声明允许的范围外,成为索引越界(out of range)或者超出范围illegal ) 或者简单的说索引非法,大多数系统上数组索引的结果是你的程序采取一些错误的操作,也许是在难性的,而且不会向你发出任何警告。
在处理数组循环的时候数组索引越界往往仿生在第一次迭代或者最后一次迭代的时候,所以必须仔细检查所有数组处理循环,确定他们开始和结束于合法的数组索引。
作为形参的数组既不是传值调用参数,也不是传引用调用参数,它是一种新型的形参类型,称为数组形参(array parameter)一旦数组实参代替数组形参,它实际传给函数的是数组实参的第一个索引变量的内存地址。
为表示 一个字符串,将它设定基类为char 的数组,最后的字符‘\0’标志结束,成为空字符串,(null chararcter) 以这种方式存储的字符串称为c 字符串。
char short[]="abc";
char short[]={'a','b','c'};
两个不一样。
为c字符串赋值采用strcpy 但不会检查是否超过长度。还有另一个安全的版本,strncpy要三个参数最后一个参数指定了要复制多少字符串。
林一个测试两个字符串是否相等使用strcmp 但是这个返回你值有点不一样。如果匹配则返回false
可以用输入操作符>>来填充一个c字符串变量,所有空白字符都会被忽略(空格,制表符,换行符)除此之外每次读取输入的时候,都会在下一个空格或者换行处停止。如果希望能正行输入可以将输入并将最终的c字符串变量中及使用预定义函数getline 有两个参数,第一个用于接收输入的c字符串变量,第二个是一个正数,通常是c字符串变量的声明长度,第二个参数规定getline 最多能够填充c字符串数组多少的数组元素。
char a[80];
cout<<"enter the input:\n:";
cin.gerline(a,80)
cout<<a<<"end of output";
执行getline 如果c字符串数组中填充了由第二个参数指定的字符串,就会停止输入 ,即使当时未遇到整行结束。
#include<iostream>
#include<cstdlib>
#include<cctype>
void new_line();
void read_and_clean(int& n);
int main()
{
using namespace std;
int n;
char ans;
do
{
cout<<"enter the integer and press return:\n";
read_and_clean(n);
cout<<"that string converts to the integer"<<n<<endl;
cout<<"again?\n";
cin>>ans;
new_line();
}while ((ans!='n')&&(ans!='N'));
return 0;
}
void read_and_clean(int& n)
{
using namespace std;
const int ARRAY_SIZE=6;
char digit_string[ARRAY_SIZE];
char next;
cin.get(next);
int index=0;
while(next!='\n')
{
if((isdigit(next))&&(index<ARRAY_SIZE-1))
{
digit_string[index]=next;
index++;
}
cin.get(next);
}
digit_string[index]='\0';
n=atoi(digit_string);
}
void new_line() //读取当前行上剩余的字符,但是不做处理,相当于丢弃该行剩余的字符串
{ using namespace std;
char symbol;
do
{
cin.get(symbol);
}while(symbol!='\n');
}
atoi 函数获取一个c字符串参数,返回与之对应的int值如果atoi("123")返回就是123 如果参数不与一个int值对应 atoi就会返回一个0.例如atoi("#37")是alphabetic to integer 函数atoi在cstdlib 库中,所以要想在程序中使用必须包括预编译指令。如果数字很大不能转换为int值则可以考虑从c字符串转换为long 类型的值使用atol
函数,与atoi函数一样。返回long 类型的值。
atof("0.99")返回double 值9.99是alphabetic to floating point 的缩写。含有小数点的数字统称为浮点数反映了计算机将这种数字存储到内存时对小数点的处理方式。