C 语言中的好基友 数组和指针之四

本文通过一系列有趣的示例展示了C语言中数组与指针的交互使用方式,包括不同形式的数组元素访问方法,并探讨了一些非常规用法的有效性和编译器反应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天看到CoolShell.cn上面一个关于数组指针的例子,拿过来运行下,我的确是有些醉了。。

#include <stdio.h>
int main()
{

    int a[5]={1,2,3,4,5};
    printf("1..%d\n", a[1]);        
    printf("2..%d\n", *(a+1));      
    printf("3..%d\n", *(1+a));      
    printf("4..%d\n", 1[a]);  //这个也能行??  

    //int 3[b]= {1,2,3};  //尝试这么变态的声明数组,编译器报错了,看来这种写法只能在表达式中存在
    
    printf(&"abcdefg..%c\n"[2],"abcdefg\n"[2]); //把这种奇怪的表示方法应用到这里也是可以滴!  
    printf(&"abcdefg\n"[2]);
    printf(&2["abcdefg\n"]);

    return 0;
}

看看运行结果是否和你想的一样?

./aa
1..2
2..2
3..2
4..2
cdefg..c
cdefg
cdefg



同时附上我的Makefile供懒人copy&paste&run

cat Makefile 

print:aa
	./aa
aa: aa.o
	gcc -o aa aa.o
aa.o: aa.c
	gcc -c aa.c

cat aa.c

#include <stdio.h>
int main()
{

	int a[5]={1,2,3,4,5};
	printf("1..%d\n", a[1]);		
	printf("2..%d\n", *(a+1));		
	printf("3..%d\n", *(1+a));		
	printf("4..%d\n", 1[a]);	

	//int 3[b]= {1,2,3};
	
	printf(&"abcdefg..%c\n"[2],"abcdefg\n"[2]);
	printf(&"abcdefg\n"[2]);
	printf(&2["abcdefg\n"]);

	return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值