这是有声音的视频,请检查播放器或者声音输出设备。

这次学习的内容:指针(一维数组,二维数组,指向字符串)

//=====================================

一维数组

指向数组的第一个元素

#include <stdio.h>

main()
{
int *p, i, a[5];

p = a; //等价于 p = &a[0];

for( i=0; i<5; i++ )
{
scanf( "%d", p++ );
}

p = a;

for( i=0; i<5; i++,p++ )
{
printf( "%d", *p );
}
}

------------
//scanf( "%d", p++ );
scanf( "%d", &a[i] );

//==============================================
* 和 ++ 的优先级情况

#include <stdio.h>

main()
{
int a[3]={1,2,3};

int *p=a;    // *p=a+1 ; 这样 p 指向第二个元素了

printf( "%d \n", *p++ );

printf( "%d \n", *++p );
}

//============================================
多维数组的指针

#include <stdio.h>

main()
{
int a[3][4] =
{
{1,2, 3, 4},
{5,6, 7, 8},
{9,10,11,12}
};

int *p;

for( p=&a[0][0]; p<a[0]+12; p++ )
{
printf( "%d ", *p );
}

printf( "\n" );
}

p=&a[0][0] 也可以写成 p=a[0]

//===========================================
字符指针,指向字符串的指针

#include <stdio.h>

main()
{

char s1[5] = "abcd";
char *s2 = "hijk";

printf( "%s \n", s1 );
printf( "%s \n\n", s2 );

printf( "&s1 = %x \n", &s1 );
printf( "&s1[0] = %x \n", &s1[0] );
printf( "s1 = %x \n", s1 );

printf( "-------------------------\n" );

printf( "&s2 = %x \n", &s2 );
printf( "&s2[0] = %x \n", &s2[0] );
printf( "s2 = %x \n", s2 );

}

注意 字符数组和字符指针在内存的分配情况

-------------------------

指针的所有视频就到这里结束了,谢谢观看。88


“linux_C语言_10_02 指针(一维数组,二维数组,指向字符串)”没有评论

有任何疑问或建议,可以给作者留言:



公告:

  • 2010年5月之前的视频是文字解说演示,没有声音。
  • 2010年5月以后的视频全部带声音。