Error[8]: Undefined offset: 62, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 114
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

1.请问str[3]和*(str+3)是否完全等价?
答:完全等价
2.请问下面代码是否可以正常执行? 
#include

int main(void){
    int a[5]={1,2,3,4,5};
    int *b;
    
    b=&a[3];
    printf("%d\n",b[-2]);    //b[-2]等价于*b-2
    
    return 0; 

答:可以正常执行
3.为什么不可以用if(str1==str2)这样的形式来比较两个字符串?
不会,    答案:因为这样比较的是两个字符串的指针,而不是字符串本身 
4.仔细阅读下列代码! 
#include

int main(void){
    int array[10]={0,1,2,3,4,5,6,7,8,9};
    int *p=(int *)(&array+1);    //因为&array是指向整个数组的首地址的 
                            //跨度为sizeof(array)/sizeof(array[0]),也就是跨度为一个数组
                            //然后将他强制转换为int类型的指针 
    printf("%d\n",*(p-6));    //因为p指针是一个int类型的,所以-6等于指针移6个int单位 
    
    return 0;

5。

仔细阅读下列代码 
#include

int main(void){
    int array[10]={0,1,2,3,,4,5,6,7,8,9};
    int *(p)[10]=&array;//数组指针指向一个数组,这个数组里有10个元素 
    
    printf("%d\n",*(*(p+1)-6));
    
    return 0;

数组指针和指针数组的结合使用

#include 

int main(void){
	char *array[5]={"FishC","Five","Star","Good","WOW"};//指针数组,指针指向一个数组 
	char *(*p)[5]=&array;   //char (*p)[5]=&array 这个可以表示为一个简单的指向一个带有5个元素的数组,在外边再加一个*,表示对数组中的元素还能进一步解引用, p+1的跨度为sizeof(int)*5!!!
	int i,j; 
	
	for(i=0;i<5;i++){
		for(j=0;*(*(*p+i)+j)!='
';j++){ printf("%c ",*(*(*p+i)+j)); } printf("\n"); } return 0; }

 <===>)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 29, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
小甲鱼c语言 23课指针 数组和数组指针_C_内存溢出

小甲鱼c语言 23课指针 数组和数组指针

小甲鱼c语言 23课指针 数组和数组指针,第1张

1.请问str[3]和*(str+3)是否完全等价?
答:完全等价
2.请问下面代码是否可以正常执行? 
#include

int main(void){
    int a[5]={1,2,3,4,5};
    int *b;
    
    b=&a[3];
    printf("%d\n",b[-2]);    //b[-2]等价于*b-2
    
    return 0; 

答:可以正常执行
3.为什么不可以用if(str1==str2)这样的形式来比较两个字符串?
不会,    答案:因为这样比较的是两个字符串的指针,而不是字符串本身 
4.仔细阅读下列代码! 
#include

int main(void){
    int array[10]={0,1,2,3,4,5,6,7,8,9};
    int *p=(int *)(&array+1);    //因为&array是指向整个数组的首地址的 
                            //跨度为sizeof(array)/sizeof(array[0]),也就是跨度为一个数组
                            //然后将他强制转换为int类型的指针 
    printf("%d\n",*(p-6));    //因为p指针是一个int类型的,所以-6等于指针移6个int单位 
    
    return 0;

5。

仔细阅读下列代码 
#include

int main(void){
    int array[10]={0,1,2,3,,4,5,6,7,8,9};
    int *(p)[10]=&array;//数组指针指向一个数组,这个数组里有10个元素 
    
    printf("%d\n",*(*(p+1)-6));
    
    return 0;

数组指针和指针数组的结合使用

#include 

int main(void){
	char *array[5]={"FishC","Five","Star","Good","WOW"};//指针数组,指针指向一个数组 
	char *(*p)[5]=&array;   //char (*p)[5]=&array 这个可以表示为一个简单的指向一个带有5个元素的数组,在外边再加一个*,表示对数组中的元素还能进一步解引用, p+1的跨度为sizeof(int)*5!!!
	int i,j; 
	
	for(i=0;i<5;i++){
		for(j=0;*(*(*p+i)+j)!='
';j++){ printf("%c ",*(*(*p+i)+j)); } printf("\n"); } return 0; }

 

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/674823.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存