小编int*_*075的帖子

二维数组和指针

我有以下代码片段:

char board[3][3] = {
                     {'1','2','3'},
                     {'4','5','6'},
                     {'7','8','9'}
                   };

printf("address of board : %p\n", &board);
printf("address of board[0] : %p\n", &board[0]);
Run Code Online (Sandbox Code Playgroud)

两个printf()语句都打印相同的值:0x0013ff67

  1. 据我所知,board(ie)数组名称代表第一个子数组的地址(即)board[0]

  2. board[0] 表示第一个数组中第一个元素的地址(即) board[0][0]

为什么我在所有printf()陈述中都得到相同的地址?我希望这两个语句都有不同的地址.

我对这些东西很新,并且不理解这种行为.请赐教.

c pointers multidimensional-array sub-array

7
推荐指数
2
解决办法
1576
查看次数

改变指针数组的内容

这似乎应该很容易,但我花了太多时间.希望有人可以提供帮助.

char *labels[] = { "apple", "orange" }; // each items inside label is string literal. We can't change them-
Run Code Online (Sandbox Code Playgroud)

看下面的内容

char a[]="hi";
char b[]="hello";
char *name[]={a,b};//each item inside name is not string literal rite??
*name="bye";
puts(a);
Run Code Online (Sandbox Code Playgroud)

我认为输出将是bye因为我改变了a[]使用的内容*name="bye"

但产量仍然是hi.为什么?

c arrays pointers

1
推荐指数
1
解决办法
90
查看次数

字符串指针

以下两个代码片段编译时没有任何错误/警告,但在运行时崩溃.请赐教.

计划1

 int main( )
{
   char *p= "Hello" ;

   *p = 'B' ;
    printf("\n%s",p);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

计划2

int main( )
{
   char *p= "Hello" ;
   Char *q="mug"
   *q = *p ;
    printf("\n%s",q);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

对于程序2,我预计输出为'Hug'.

c arrays string pointers

0
推荐指数
1
解决办法
4201
查看次数

通过char指针输出不正确

看下面的程序

int main()
{
 char p[3]="bug";
 puts(p);
 char *a=p;
 puts(a);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

对于第一次投注,我得到正确的输出(即)"bug"
但是对于第二次投注,我输出为"bug↓"

  1. 为什么在末尾附加第二个输出垃圾值?
  2. char*a指向与char p [3]相同的内存位置.为什么它无法检测结束'\ 0'?

c arrays string pointers

0
推荐指数
1
解决办法
89
查看次数

标签 统计

c ×4

pointers ×4

arrays ×3

string ×2

multidimensional-array ×1

sub-array ×1