C/C++学习笔记

1.C语言中使用关键字sizeof来求数组长度

  1. char temp[3];
  2. int tempLen = sizeof(temp)/sizeof(char);

strlen只能用来求字符串长度

2.交换两个数据的几种方法及其区别

方法一:值传递,在main函数中并未改变a,b 的值,虽然在swap中a,b的值交换了

  1. void swap(int a,int b){
  2. int temp;
  3. temp = a;
  4. a = b;
  5. b = temp;
  6. }

在调用swap函数时,a的值传给一份复制x,b的值传给一份复制y,在交换过程中,x,y 的值交换了,但调用完swap函数后,变量x和y释放了,变量a 和b 的值依然没变

方法二:引用传递,值交换

  1. void swap(char &ch1,char &ch2){
  2. char temp;
  3. temp = ch1;
  4. ch1 = ch2;
  5. ch2 = temp;
  6. }

定义两个实参字符变量 ch1 和 ch2 后,传递给形参&ch1和&ch2时,传递的是ch1和ch2的引用,swap(ch1,ch2)实现值交换,无法对地址操作

方法三:指针传递,值交换

  1. void swap(int *a,int *b){
  2. int temp;
  3. temp = *a;
  4. *a = *b;
  5. *b = temp;
  6. }

swap(&a,&b)实现值交换,可以定义指针变量 *p1和*p2,p1 = &a,p2 = &b,指针变量可以对地址进行操作,不过此过程中地址未交换。

3.c++中二维数组的指针如何定义

// int a[2][2] = {0, 1, 2, 3};
// **a 就是 a[0][0] 第一行第一列。
// *(*a + 1) 就是 a[0][1] 第一行第二列。
// **(a + 1) 就是 a[1][0] 第二行第一列。
// *(*(a + 1) + 1) 就是 a[1][1] 第二行第二列

int (*a)[] 和int a[][] 是等价的,访问元素的方法与a[][]相同,即a[i][j]