c/c++

1 cout<<a<<end; cin>>a;c++关于变量的输入及输出

2 C++ 中,优先级从高到低。! ~ ++为同一优先级,顺序为从右到左。如!a++相当于!(a++)。然后是* ,/ ,%,然后是+,-,再然后是  <<,>>,

然后是<=,>=,等。最后是&&,|| 等。

3
  1. struct stuff{  
  2.         char job[20];  
  3.         int age;  
  4.         float height;  
  5. };  
  6. struct stuff Huqinwei;  /结构体的一般定义及使用形式。通过结构体实例访问结构体中的成员或者变量。structinstance.valueabblename();
4 c++ 中类与结构体的的区别是,类中的变量时私有成员变量,而结构体中的变量为共有成员变量。都可以定义析构函数(初始化成员变量)及结构函数(清理工作,并释放分配的内存),且构造函数无返回值。可以有多个构造函数。带返回值的构造函数,和不带返回值得构造函数,都可以有。在结构体外调用的时候,需要注意,带参的构造函数的用法是 structname   instancename(参数);不带参的构造函数用法是structname  instancename;

5 类的使用可以classname * instancename=new classname(); 定义类的实例,并分配内存,可以使用instancename->classfunction,完成对类中成员的使用及访问。

6 通过标准输入,实现程序的暂停。int counter; cin>>counter

7 :typedef struct abc{

}ABC;与typedef abc{

}ABC;第一种情况是将结构体abc重新起名叫ABC,类似typedef int inthua;将整型变量重新起名叫inthua.ABC是新的类型的名字

而第二种情况是定义了类型abc 的变量ABC,这种情况下ABC是变量名。

8

C语言中数组是使用大括号进行如 int A[]={a1,a1,a3};

selectsort(A, N);将数组变量进行参数的传递时,只需要传数组的名字即可,

int * selectsort(int a[], int n); 将数组的传入子函数的写法,当子函数也需要返回数组时,可以将子函数的类型定义为in * 类型

int *p=selector(A,N )就可以返回数组,使指针p 指向返回序列的基地址。

// c/c++ 在使用的时候调用函数的过程中关于参数的调用 ,形参与实参一般不重名
2 在子函数中的形参 一般要带上变量的类型
3 若子函数是带返回值的,返回值是什么类型,函数就是什么类型。
4:在主函数调用函数时,一般把调用的参数定义赋值后,直接在调用函数里调用就可,关于数组的调用是int main
9
sqlist *L 是声明一个指针
sqlist &L 是声明一个引用,声明一个引用,引用不能为空,并且要初始化。

一个是指针,一个是引用,两者最大的却别就是一个分配内存,另一个不分配,指针要分配内存存放变量的地址,引用就是变量的一个别名,就和数据库中的同义词一样。
10: int a[3]={1,2,3};

int *p=&a[0]

对数组的元素进行访问的两种方式

for(int i=0;i<3;i++)            for(int i=0;i<3;i++)


 {                                          {cout <<p[i]<<endl;}

 cout<<*(p+i)<<endl;

}  通过指向数组的指针,可以访问数据库里的元素

13 关于递归的使用,就是在函数里调用自身,在调用自身的时候一定要注意函数的出口,也就是什么时候不满足条件了,递归结束。

def factorial(n) 
  if n <= 1 then
    return 1
  else
    return n * factorial(n - 1)
  end
end
14: scanf是格式化输入,printf是格式化输出。
cin是输入流,cout是输出流。效率稍低,但书写简便。

格式化输出效率比较高,但是写代码麻烦。
流输出操作效率稍低,但书写简便。 /
15:从C/c++的标准库函数,new 是c++的运算符,可以理解由于c++中的运算符功能较C中的运算符在意义上作了扩展的,可以理解成函数调用 。  malloc则是底层的,new的实现中是调用了malloc来
实现堆内存的统一管理的,因此,可以认为new 是malloc的扩展同根版,而且单从内存分配的功能上来说,它们是在同一块内存区域内实现
统一管理的
16:malloc 是从C/c++的标准库函数,new 是c++的运算符,可以理解由于c++中的运算符功能较C中的运算符在意义上作了扩展的,可以理解成函数调用 。  malloc则是底层的,new的实现中是调用了malloc来
实现堆内存的统一管理的,因此,可以认为new 是malloc的扩展同根版,而且单从内存分配的功能上来说,它们是在同一块内存区域内实现
统一管理的

17:c/c++的C语言字符串类型的定义及使用访问时比较简洁的

string string1 = "aaa";
  {  int counter;
        for (int i = 0; i < string1.length(); i++)
            cout << string1[i] << endl;
        cin >> counter;
}

18:定义字符串数组char* a[] = {"1","2"}; 定义字符串数组指针a,a为指向字符串数组的指针,他的值就是a的首地址。

int num = atoi(a[1]); atoi()函数负责将字符变量变成整型变量。

19int a={};定义一个普通的整型数组,a 是数组的名字,也是数组的首地址,当要输出第i个元素的地址可以使用a+i,

对于结构体数组也是如此的,stu students[3] = { { 9801,"AA", 20 },
{ 9802,"BB", 21 },{ 9803, "CC", 19 } };
如上定义了长度为3的结构体数组,cout<<student<<endl;输出的结构体数组第一个元素地址。而students + 2结构体数组第3个元素的地址;

// 对于结构体数组,和整型数组而言,数组的名字就是第一个元素的首地址。数组(结构体)名字+i 访问i-1 个元素的地址。

int a [2][3]= { 1, 2, 3, 4 ,5,6};
for (int i = 0; i < 2; i++)
    for (int j = 0; j < 3;j++)

cout << a+(i*3)+j  << endl;

20: 而字符型的数组的定义char *s[]={"rrrr"};

char *s1="wwwwewee";

char str[12]={"hellow"}; 如上定义指向字符串的指针及字符串数组

此时执行cout<<s1<<endl;/为字符串数组元素的首地址;

cout<<str<<endl;  输出执行字符串指针的名字及数组的名字都是他们所表示的字符串。

s1 指向字符串的指针,指针的大小为四个字节,sizeof(s1)=4,str是一个字符串数组,sizeof(str)就是这个字符串数组的大小,(不要忘记最后的\0).

char *a[] = { "aa", "bb" }; 字符串数组指针的定义,cout<<a<<endl; 此时的输出为a的首地址。其中的a 是指向char类型的指针数组。printf("\n%s",pchar1[i])依次存放i+1个元素的

地址。

    void main() {
        int i,m;
        char *aa[] = { "aa", "bb", "cc", "dd" };
        for (i = 0; i < 4; i++)
        {
            printf("%s", aa[i]);
            printf("\n");
            cout << aa << endl;
        }
        
        cin >> m;
    }   访问指针数组的数组元素及各个元素变量的地址。

21:对链表中环的判定:http://blog.csdn.net/thefutureisour/article/details/8174313

22: 对链表的非空及长度的判定:http://blog.csdn.net/dan15188387481/article/details/49722053

23: http://write.blog.csdn.net/postedit/77850857

 错误分析:       错认为 GetMemory(char   *p)中的 p “就是” GetMemory(str)中的str。但p“不是”str,它只是“等于”str 。
就象:   int   a   =   100;  
            int   b   =   a;       //   现在b等于a  
            b   =   500;         //   现在能认为a   =   500 ?     
  显然不能认为a   =   500,因为b只是等于a,但不是a!  当b改变的时候,a并不会改变,b就不等于a了。    因此,虽然p已经有new的内存,但str仍然是null 

24:static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用;
    static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值;

25:++i 及i++的区别一定一定一定要记得区分开来,++i 在前面,记得是先加。i++记得是后加的。

26:strlen(char *s)返回字符串的长度,但是不包含结束符“\0”。所以

char string[10];

if(strlen(char *str)<=10)

{

 strcpy(string,str)// 这样的化程序会报错,将if 语句改为小于10;

}

27:     int a[255], i,m;
    for (i = 0; i <= 260; i++)
    {
        a[i] = i;
        cout << a[i] << endl;
        
    }
    cout << a[345] << endl;
    cin >> m;
  //c/c++不进行数组的越界检查。

 28:int main()
{
 char a;
 char *str=&a;
 strcpy(str,"hellow");
 printf(str);
}
/因为没有为str 指向字符a的地址,

29:变量不能重复初始化,int  aa=5;

aa=6;这样就可以改变变量的值,但是int aa=5;

int aa=6;

这样就不可,因为重复初始化变量

{
    int aa;
    char *s = "AAA";
    printf("%s", s);
     s[0]= "B";
    printf("%s", s);
    cin >> aa;
}   这样对字符串中数组赋值是不对的,因为通过第一部,字符串中的位置已经变成常量。可以通过寻址的方法对字符串赋值。

/char c[]="hellow,world";分配一个局部数组,对应的是内存中的栈

    char *s="hellow,world";全局变量,对应的是内存中的普通数据段(静态存储区)


30:  4<< n 等效于 4 乘以 2的 N 次方,

31:指向函数的指针的声明及使用。

  1. int Sum(int a, int b)  
  2. {  
  3.   return a + b;  

    1. int (*FnName)(intint);           // 声明一个函数指针,可以将FnName理解为新定义的变量  
    2. FnName = &Sum;             // 将Sum函数的地址赋给它  
    3. (*FnName)(3, 5);     

32:静态局部变量只会被初始化一次,次使用上次的保存值。

静态存储方式:是指在程序运行期间分配固定的存储空间的方式。
动态存储方式:是在程序运行期间根据需要进行动态的分配存储空间的方式。

静态局部变量属于静态存储类别,在静态存储区内分配存储单元。在程序整个运行期间都不释放。而自动变量(即动态局部变量)属于动态存储类别,占动态存储空间,函数调用结束后即释放。

33:printf("\n");实现c/c++的换行。

34:extern int a;声明一个整型的变量a, int a; 定义一个整形的变量a,声明不分配内存,但是定义需要

35:使用new 分配内存。

int *p = new int;
        cout << p << endl;
        *p = 100;
        cout << *p << endl;
        cout << p << endl;

36: 栈是由编译器在需要时分配的,不需要时自动清除的变量存储区。里面的变量通常是局部变量、函数参数等。堆是由malloc()函数(C++语言为new运算符)分配的内存块,内存释放由程序员手动控制,在C语言为free函数完成(C++中为delete)。

37:虚函数是面向对象中实现多态的函数。

void foo();//普通类函数

virtual void foo1();//虚函数

virtual void foo2() = 0;//纯虚函数

}

类里声明为虚函数的话,这个函数是实现的,哪怕是空实现,它的作用就是为了能让这个函数在它的子类里面可以被重载,这样的话,这样编译器就可以使用后期绑定来达到多态了

纯虚函数只是一个接口,是个函数的声明而已,它要留到子类里去实现。

虚函数在子类里面也可以不重载的;但纯虚必须在子类去实现,

纯虚函数在子类中重载的化,一定要加上关键字virtual。,

38: 构造函数与析构函数的调用是自动进行的,构造对象的时候会调用构造函数,而销毁对象时候会调用析构函数。

   构造函数及析构函数没有返回值及返回类型。

39:C语言中的结构体只是数据的组合,在c 语言的结构体中不声明函数。

40:形参可以为空,但不能省略。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值