C++学习第3讲:复合类型[讲义]

要点:
1、指针
2、数组与字符串

1)指针
  对于类型T,T*是“到T的指针”类型。
  说白了讲,指针里保留的是一个32位的地址值,这个地址指向了一个内存区域,至于如何解释这个内存区域,则是由其类型决定。

  如:char c=’a’;
      char* p=&c;

通过一个完整的示例来看一下:


#include
using namespace std;

int main()
{
  /*
  //为了更直观,我们可以将测试的类型设为int
  
  char c='A';
  char* p=&c;
  
  cout<<"c="<  cout<<"*p="<<*p<  cout<<"p="<<(int)p<    //这里进行了强制转换输出
    //如果不转换,输出的将是字符
  */
  int c=100;
  int* p=&c;
  
  cout<<"c="<  cout<<"*p="<<*p<  cout<<"p="<  return 0;
}

一个特殊的数字:0
当给一个指针赋值为0时,如char *p=0; 则表明该指针没有使用,也即没有指向任何一个位置。

2)数组与字符串
  数组,通过在变量后面添加中括号[],然后在中括号[]里填上数组的个数:
  如:
    int num[10];
    char ch[20];
    double dd[15];

  对数组的操作与引用,都是通过下标来完成的,如:num[0],num[1],……num[9]
  注意一点:数组的下标是从0开始的,所以num[10]的第一个元素是:num[0],而最后一个

则是num[9]

3)
  A)字符串的长度与大小
  sizeof(“iawen”);  //大小
  strlen(“iawen”);  //长度


/*
测试字符数组与字符串的差别
*/
#include
using namespace std;

int main()
{
  //char ch[6]="iawen";
  
  char ch[5]={'i','a','w','e','n'};
  char tmp[]="teest";
  
  cout<  //cout<<"ch的长度是:"<  //cout<<"ch的大小是:"<  return 0;
}

  B)对字符串的读取:


/*
测试读取字符串的溢出与正确读取
*/

#include
using namespace std;

int main(){
  char ch[10]={0};
  cout<<"please enter a string:\t";
  //cin>>ch;
  //ch[9]=0;  //虽然截取了,但依然会覆盖到后面的数据
  
  cin.getline(ch,10);
  
  cout<<"You input is:\t";
  cout<  
  return 0;
}

3)数组与指针
  指针是操作数组的利器!


/*
测试数组的地址
*/
#include
using namespace std;

int main()
{
  int num[10];
  for(int i=0;i<10;i++)
    num[i]=i+10;
  
  cout<<"num数组的地址:"<  cout<<"数组第1元素的地址:"<<&num[0]<  cout<<"数组第2元素的地址:"<<&num[1]<  
  return 0;
}

利用指针来指向数组:


/*
测试对指针的操作
*/
#include
using namespace std;

int main()
{
  int num[10];
  int *p=num;
  for(int i=0;i<10;i++)
    *(p+i)=i+10;
    
  
  cout<<"num数组的地址:"<  cout<<"数组第1元素的地址:"<  cout<<"数组第2元素的地址:"<  
  return 0;
}

4)引用(别名)

5)结构


#include
using namespace std;

struct people{
  char name[10];
  short age;
  char addr[128];
};

int main()
{
  people iawen;
  cout<<"Please input your name、age and address:\n";
  cin>>iawen.name>>iawen.age;
  cin.get();
  cin.getline(iawen.addr,128);

  cout<<"\n\nyour name is: "<  cout<<"your age is: "<  cout<<"your address is: "<
  return 0;
}

发表评论