一.结构体变量的声明方式:
(1)先声明结构体类型再定义变量
typedef struct { int red; int green; int blue; }color; color c1;
(2) 再声明类型的同时定义变量
struct color { int red; int green; int blue; }c1;
(3)直接定义结构体变量
struct { int red; int green; int blue; }c1;
注意:typedef指声明心得类型名(没有创造新的类型)
//例 typedef int COUNT; COUNT i, j; //与下面的等价 int i, int j;
//例 int a[10], b[10], c[10], d[10]; //可以改为 typedef int ARR[10]; ARR a, b, c, d;
注意:COUNT,ARR一般为大写;
二.关于去掉字符串中空格的方法
#include<iostream> using namespace std; int main() { int i = 0; int j = 0; char a[] = " How are you! "; cout << a << endl; for (i = 0; a[i]; i++) { if (a[i] != ' ') a[j++] = a[i]; a[j] = '\0'; } cout << a << endl; }
三.关于字符串指针
定义:括在一对双引号之内的字符序列或转义字符序列称为字符串常量。
例如:“How are you!” “a” “*abc\n\t”
它是不可以改变的.例如:
char *p="ni hao!";
如果你试图改变指针所指向的内容是会报错的.
例如:(*p)='h';//运行的话会报错
因为字符串常量是放在静态存储区的,这部分内容是不能修改的。
字符串变量:在c中是没有这个概念的,c中如果想将一个字符串存放到变量中,必须使用字符数组,就是用一个字符型数组存放一个字符串,例如:
char data[10]="china";这时候,这个字符数组存放了一个字符串,它是可以改变的,
例如:data[0]='m';这种操作都是可以的。
大概意思,就这些了,不清楚的可以hi我.
例如:“How are you!” “a” “*abc\n\t”
它是不可以改变的.例如:
char *p="ni hao!";
如果你试图改变指针所指向的内容是会报错的.
例如:(*p)='h';//运行的话会报错
因为字符串常量是放在静态存储区的,这部分内容是不能修改的。
字符串变量:在c中是没有这个概念的,c中如果想将一个字符串存放到变量中,必须使用字符数组,就是用一个字符型数组存放一个字符串,例如:
char data[10]="china";这时候,这个字符数组存放了一个字符串,它是可以改变的,
例如:data[0]='m';这种操作都是可以的。
大概意思,就这些了,不清楚的可以hi我.
#include<iostream> using namespace std; int main() { const char *s = "AAA"; cout << s << endl; //s[0] = 'b';会报错因为不可修改 return 0; }
四.关于只增自减
自增自减只能用于变量,不能用于常量或表达式
例:5++,(a+b)++不合法,结合方向是“自右向左”
首先要反对说“++i先自加,i++后自加”的,两者的差异是返回值不同。 这道题涉及到++i和i++的概念,以及函数返回值能否作为左值。 以整形数据为例: ++i: int pre_increment(int &a){ a=a+1; return a; }
函数返回的引用类型可以作为左值。 i++: int post_increment(int &a){ int temp=a; a=a+1; return temp; }
函数返回的一般类型不能作为左值。
五.关于abs返回值可为0,负数,正数的解释
int abs(int num);
num为0或正数时,函数返回num值;
当num为负数且不是最小的负数时(不要问我最小的int类型负数是多少)
当num为负数且不是最小的负数时(不要问我最小的int类型负数是多少)
函数返回num的对应绝对值数,即将内存中该二进制位的符号位取反,并把后面数值位取反加一;
当num为最小的负数时(即0x80000000),由于正数里int类型32位表示不了这个数的绝对值,所以依然返回该负数。
当num为最小的负数时(即0x80000000),由于正数里int类型32位表示不了这个数的绝对值,所以依然返回该负数。
#include<iostream> using namespace std; int main() { int a = 0x80000000, b = 0x7fffffff; cout << a << endl; cout << abs(b) << endl << abs(a) << endl; return 0; }