C+实验四:指针和数组

1. 理解并运行下列程序

// T * 就是 “T的指针类型”

// T * p 就是 “T的指针类型”的变量p

int main(){

int ival = 1024;

int *pi = &ival;

int **ppi = π // "int **" 即使 "(int *) *"就是 "int的指针的指针类型"

std::cout

std::cout

std::cout

std::cout

std::cout

}

2. 理解并运行求C风格字符串(最后有结束字符的字符数组)长度的函数。

#include

#include //C语言字符串处理函数头文件

int StrLen(const char *s){

const char *p = s;

while(*p!='\0')p++;

return p-s;

}

int strLen(const char *s){

int i = 0 ;

while(s[i]!='\0')i++;

return i;

}

int main(){

const char * str = "hello world"; // char str[] = {'h','e','l','l','o',...'d','\0'};

int len = strlen(str); //C语言自带的求字符串长度函数strlen

std::cout

len = strLen(str);

std::cout

len = StrLen(str);

std::cout

}

3. 编写比较2个C风格字符串的大小的函数strCmp,模仿C语言自带的比较大小函数strcmp.

/*strcmp(s1,s2)

s1 = {'h','e','\0'}

s2 = {'h','e','l','l','\0'}

s1 = {'h','e','l','l','\0'}

s2 = {'h','e','\0'}

*/

// s[i] : *(s+i)

int strCmp(const char *s1,const char *s2){

//你的代码

// ...

}

int main(){

char s1[] = {'h','e','\0'};

char s2[] = {'h','e','l','l','\0'};

int ret = StrCmp(s1,s2);

std::cout

else if(ret==0)

std::cout

else

std::cout"

}

4. 估计下列代码运行结果是什么?有什么错误?运行改程序,验证你的判断。

int main(){

int i,arr[5];

int *p = &i;

*p = 6;

std::cout

int *q = arr;

std::cout

*(p+2) = 20;

*(q+2) = 20;

std::cout

for(int i = 0 ; i

q[i] = i*10;

for(int i = 0 ; i

std::cout

for(int *s = q; s!= (arr+5) ; s++)

std::cout

std::cout

}

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180328G1IJK200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券