C/C++ for Windows - Hỏi về hằng con trỏ trong C.
Hỏi đáp, trao đổi về các công cụ lập trình C/C++ trên Windows (VC++, Borland C++ Builder, ...). Các câu hỏi thuần tuý về C/C++ xin hãy gởi vào box lập trình
C/C++.
| Hỏi về hằng con trỏ trong C. |
|
Member
Member since
12:53 15-12-2009
Posts:
1
Fantasy Points:
4
|
Chào các bạn,mình có một thắc mắc đó là trong c khi khai báo một mảng int a[10]; ở đây mảng a là một hằng con trỏ (const pointer) có nghĩa là chỉ được trỏ vào 1 vùng nhớ cố định và ko thể trỏ sang vùng nhớ khác được vậy tại sao khi lập trình chúng ta có thể tạo ra một mảng int b[10] và gán a=b; được ? Đây là code ví dụ. #include<stdio.h> void main() { int a[10]={1,2}; int b[10]={3,4}; int c[10]; for(int i=0;i<2;i++) printf("b[%d]=%d \n",i,b[i]); b=a; for(int i=0;i<2;i++) printf("b[%d]=%d \n",i,b[i]); }
This post has been viewed
1,218
time(s).
1 direct repli(es)
and
0 indirect repli(es).
|
Title
|
Poster
|
 |
 |
Hỏi về hằng con trỏ trong C. |
| |
|
|
Mamut
|
|
| Re: Hỏi về hằng con trỏ trong C. |
|
Member
Member since
18:55 21-05-2002
Posts:
252
Fantasy Points:
4,959
|
 Posted at
10:00 31-01-2010
Reply to
Hỏi về hằng con trỏ trong C.
( ff8711)
Uh, lạ quá hén.
Mình khai báo int i, như vậy i trỏ đến một vùng nhớ cố định và không thể trỏ sang vùng nhớ khác được. Thế mà vẫn gán i=j ầm ầm.
Đùa tí thôi, khi khai cục bộ int a[10]={1,2} nghĩa là bạn khai một biến mảng rồi gán giá trị cho nó, không có nghĩa mảng a là một const pointer. Nếu trình biên dịch cho phép gán hai mảng theo cú pháp a=b, thì không có nghĩa là cho a trỏ đến b, mà là copy nội dung của b vào a.
Không biết người khác thế nào, chứ mình không dùng phép gán hai mảng như bạn. Có thể trình biên dịch này cho phép, còn trình biên dịch khác sẽ báo lỗi. Gán từng phần tử hoặc dùng memcpy() chắc cú hơn, dễ hiểu hơn.
This post has been viewed
1,173
time(s).
0 direct repli(es)
and
0 indirect repli(es).
|
|
Permissions:
Create Topic:
No
|
Reply Topic:
No
|
Attach File:
No
|
Make Poll:
No
|