#include<cstdio>
#include<stdlib.h>
int main()
{
char* ptr=NULL;
printf("%s",ptr);
return 0;
}
Nó in (null) làm đầu ra. Ở trên là mã mẫu. Trong mã thực tôi nhận được char * như là một sự trở lại của một chức năng và tôi muốn in chuỗi ký tự để đăng nhập. Tuy nhiên, NULL cũng là một giá trị trả về hợp lệ của hàm đó và vì vậy tôi tự hỏi nếu một kiểm tra null là cần thiết trước khi in chuỗi ký tự?Mã C sau có an toàn không?
char* ptr=someFuncion();
// do i need the following if statement?
if(ptr!=NULL)
{
printf("%s",ptr);
}
Tôi chỉ muốn chắc chắn rằng sản lượng sẽ được cùng tức là nếu ptr = NULL thì đầu ra nên (null) trên tất cả các nền tảng và trình biên dịch và các mã trên (không có câu lệnh if) sẽ không sụp đổ vào bất kỳ C nền tảng tương thích tiêu chuẩn.
Tóm lại, mã ở trên (nếu không có câu lệnh if) có tương thích chuẩn không?
Nhờ sự giúp đỡ của bạn và sự kiên nhẫn :)
Trân
lali
Tiêu đề '' cung cấp cho mã của bạn là gì? Mã của bạn gọi hành vi không xác định bằng cách chuyển một con trỏ null tới một hàm không mong đợi một hàm. Bất cứ điều gì có thể xảy ra - bao gồm nó có thể vô tình làm việc, chủ yếu. –
ok, tôi hiểu rồi. Cảm ơn tất cả vì sự giúp đỡ "thời gian thực" đó :)) – ghayalcoder