int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
以上就是算二维数值地址的方法。
指向数组数值地址的表达方式:
&a[1][2]; a[1]+2; *(a+1)+2; //用这个最有B格。 &a[0][0]+1*4+2; //用地址来计算
指向数组数值的表达方式:
a[1][2]; *(a[1]+2); *(*(a+1)+2); //用这个最有B格。 *(&a[0][0]+1*4+2); //用地址来计算
解释:
a+1与a[1]分别为行==指针==和==列指针==,所表示的都为二维数组一行的元素的地址,行指针加“星号”转换为列指针,即为:a+1---->*(a+1);所以说,*(a+1)也是列指针。当表示地址时,就可以用以上表格的方式来表示。
指针的运用先看代码:
#includeint main() { int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23}; int *p; for(p=a[0];p
这里指针p指向二维数组a的第一行的第一个元素,当运用p++时,则会指向下一个元素。
这里还有一句要提的话。由于p++遍历懂得元素都是挨边儿的,所以每遍历一次,地址(不对,不能说成地址,而是位移量)相加一,所以代码p-a[0])可以表示出各个元素的位置。非常方便。
字符串与指针接着先上代码:
#includevoid main( ) { char *string=“I love China!”; printf(“%sn”,string); string+=7; while(*string) { putchar(string[0]); string++; } }
这里*string来建立字符串指针,指向字符串“I love china ”,这里字符串可以看作一个字符串变量,来被指针取地址。
char str[20]; str=“I love China!”; //这样是错误的 char *cp; cp=“I love China!”; //利用指针指向数组
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)