char**与char*a[]

char** a 和 char* a[] 介绍
深入 理解char * ,char ** ,char a[ ] ,char a[] 的区别
char*,char*,char*[]如何初始化

由于a指向一个指针类型(char*),故 a + 1 操作就是对指针类型的地址进行操作,所以 a + 1 表示地址加8字节;*a指向一个char类型,char类型占用1个字节,故 *a + 1操作就是对char类型的地址进行操作,所以 *a + 1表示地址加1字节。

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include <unistd.h>

void test1(char **p)
{
	printf("p = %x\n", p);
	printf("p+1 = %x\n", p+1);
	printf("*p = %x\n", *p);
	printf("*p+1 = %x\n", (*p)+1);
}

void test2(char *arr_p_a[])
{
	printf("arr_p_a=%x\n", arr_p_a);
	printf("arr_p_a+1=%x\n", arr_p_a+1);	
}

void test3(char arr_ch[3])
{
	printf("arr_ch=%x\n", arr_ch);
	printf("arr_ch+1=%x\n", arr_ch+1);	
}

int main()
{

	char *arr_p_a[] = {"abc", "1234", "lipenghui"};
	char **p = arr_p_a;
	char arr_ch[3] = {'a','b', 'c'};
	
	test1(p);
	test2(arr_p_a);
	test3(arr_ch);	
/*
p = 5e22b000
p+1 = 5e22b008
*p = 40075c
*p+1 = 40075d
arr_p_a=5e22b000
arr_p_a+1=5e22b008
arr_ch=5e22aff0
arr_ch+1=5e22aff1
*/
	return 0;
}
发布了84 篇原创文章 · 获赞 6 · 访问量 6404
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览